|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
| | | | Shaos wrote: Также в этой развёртке можно организовать АППАРАТНЫЙ текстовый режим 80x25 правда для этого уже понадобится CPLD P.S. Для переключения 384 или 512 пикселов по горизонтали надо уметь задавать начало экрана (старший байт #90 или #80 - можно вообще сделать произвольное начало от #00 до #FF), 1 бит на включение широкого экрана (64 колонки вместо 48), 1 бит на разрешение произвольного смещения (по умолчанию смещение #90). Наверное можно добавить 1 бит, который бы позволял временно включать всё ОЗУ (надо уметь писать в конец ОЗУ если вдруг надумаем делать полный горизонтальный скролл). Можно бордюр сделать как в ZX - например брать с ВВ5 цвета CR, CB, CG. И ещё надо чётко разделить запись в COL в режиме STD и в режиме MX - сейчас как я понимаю оно пишется в любом случае и туда и сюда, а если мы начинаем использовать доп.биты в режиме STD (типа как я добавил бит на переключение половинок основного ОЗУ и ОЗУ цвета), то оно не должно сбрасываться, если в режиме MX программа пишет туда полный 8-битный атрибут цвета. P.P.S. Ещё как я понимаю цвет номер 6 в MX на самом деле не коричневый, а тёмно-жёлтый и чтобы сделать из него коричневый надо добавить "коричневый трюк", который приуменьшает зелёную составляющую для цвета 0110, чтобы выглядело как в старом добром CGA... | | | | |
Интересный момент - частота пиксельклока 28 МГц вместо 20 разгоняет проц до 3.5 МГц (причём прозрачно - без вейтов) - в итоге получаем скорость Z80 аналогичную безвейтовому ZX-клону В будущем можно поддержать турбо-режим 7 МГц и 14 МГц (уже с вейтами) - вот тогда это по истине станет TURBOSPETS Также можно разрешить порты (скажем только 16-битное обращение выше #B000 - чтобы всё ещё можно было использовать трюки, описанные Шевцовым в основном ОЗУ, но в то же время, чтобы появилась возможность подключить 1.75 МГц AY аналогично ZX-стандарту по адресам #FFFD и #BFFD или какие-нибудь Gluk CMOS RTC) - соответственно это ещё 2 бита управления на включение турб и ещё 1 бит на разрешение портов (либо сделать порты выше #B000 всегда доступными как порты). Также можно добавить вкл-выкл кадрового прерывания (напомню, что я предполагал подачу сигнала обратного хода луча на один из входов ВВ55, чтобы ловить его программно). Ещё хотелось бы сделать ISA-слоты аналогично тому, как они были вкорячены в Спринтер P.S. И ещё при горизонтальном разрешении в 512 пикселов и 2 цветами из 16 на каждую 8-пиксельную плашку прям сразу можно начинать показывать вот такие вот 16-цветные картинки (с эффективным разрешением 128x256): P.P.S. В будущем можно и полноценную перепрограммируемую 16-цветную палитру поддержать (правда для этого уже нужно будет FPGA)
|
10 Feb 2023 22:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
По идее для аппаратного текстового режима 80x32 можно специально только 480 пикселов по горизонтали формировать, которые могут выглядеть вот так: (опять же для аппаратного текстового режима возможно потребуется FPGA)
|
11 Feb 2023 20:12 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Вот инфа по времянкам 800x600@60 с данными в случае замены пиксельклока с 40 МГц на 28.181 МГц (не ровно это чтобы попасть на размеры кратные 8 т.к. схема хардыча считает по знакоместам): Соответственно цифры пределов знакомест для 384-пиксельной графики будут такими: - 0...47 - видимая часть изображения (#2F или 0010 1111)
- 48...58 - правый бордюр (#3A или 0011 1010)
- 59...62 - передний порожек (#3E или 0011 1110)
- 63...73 - синхросигнал (#49 или 0100 1001)
- 74...81 - задний порожек (#51 или 0101 0001)
- 82...92 - левый бордюр (#5C или 0101 1100)
а для 512-пиксельной графики - такими: - 0...63 - видимая часть изображения (#3F или 0011 1111)
- 64...66 - правый бордюр (#42 или 0100 0010)
- 67...70 - передний порожек (#46 или 0100 0110)
- 71...81 - синхросигнал (#51 или 0101 0001)
- 82...89 - задний порожек (#59 или 0101 1001)
- 90...92 - левый бордюр (#5C или 0101 1100)
А вот счётчики строк останутся как были...
|
12 Feb 2023 05:53 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Можно на счёт знакомест графики отвести отдельную цепочку счётчиков, которая будет стартовать в нужном месте строки, а основная цепочка счётчиков может считать не знакоместа, как в оригинале, а пикселы - в этом случае можно более точно подогнаться под тайминги SVGA оставаясь в пределах более доставаемого кварца 56 МГц (28 х 2): 480 пикселов в строке можно добавить как один из графических режимов, выбираемых программно: для 384 видеопамять имеет размер #3000 для 480 - #3C00 для 512 - #4000 для текстового режима 80x32 - #A00 начало видеопамяти по умолчанию как известно #9000 для 480 пикселов в строке начало надо сдвинуть до #8400 для 512 пикселов в строке - до #8000 а для текстового режима видеопамять может подняться до #B600, освободив тем самым 9.5 килобайт для программы пользователя. P.S. Если символы в текстовой видеопамяти располагать не линейно, а вертикальными колонками, и знакогенератор зашить в отдельно стоящий 2Кб ПЗУ, то наверное можно даже и на рассыпухе его организовать P.P.S. Новые цифры для счётчиков: 0...559 - видимая часть экрана (до #22F = 10 0010 1111) - для режима 512 cчётчик адресов стартует после 23 (#017 = 00 0001 0111) и считает 64 знакоместа (до #3F = 11 1111) - для режима 480 cчётчик адресов стартует после 39 (#027 = 00 0010 0111) и считает 60 знакомест (до #3B = 11 1011) - для режима 384 счётчик адресов стартует после 87 (#057 = 00 0101 0111) и считает 48 знакомест (до #2F = 10 1111) 560...587 - передний порожек (до #24B = 10 0100 1011) 588...677 - синхроипульс (до #2A5 = 10 1010 0101) 678...738 - задний порожек (до #2E2 = 10 1110 0010)
|
12 Feb 2023 20:12 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
В оригинальном MX^2 с регистром COL было вот так: В 2011 году я добавил в план возможность переключения половинок основного ОЗУ и половинок ОЗУ цвета (раз уж всё равно у нас стоит чип на 128 кб в качестве основной памяти и чип на 32 кб в качестве памяти цвета): и теперь думаю, что надо физически разделить эти регистры, т.к. в данный момент при обращении в диапазон FFF8...FFFB в режиме STD и в диапазон F7F8...F7FB запись делается в оба места - и в биты STD, и в цветной атрибут MX - т.е. я планирую разделить адреса, как сами авторы и настаивали - они везде пишут, что для включения-выключения ROM и смены пятицвет/восьмицвет надо использовать адрес FFFA / F7FA, а FFF8 был стандартным адресом для задания цвета в классическом Специалисте MX - соответственно можно переименовать и перераспределить регистры так: | | | | Code: FFF8 / F7F8 (COL): D0-D3 => цвет фона (IRGB) D4-D7 => цвет изображения (IRGB) FFF9 / F7F9 (VAD): старший байт адреса начала видеопамяти (для нормальной работы стандартного режима там должно быть записано #90) FFFA / F7FA (CFG): D0 = 0 - включить ROM, 1 - выключить ROM D1 = 0 - пятицвет, 1 - девятицвет (можно переключать кнопочками) D2 = 0 - основная страница ОЗУ и цвета подключена к процессору, 1 - запасная страница ОЗУ и цвета подключена к процессору D3 = 0 - бордюр включен, 1 - бордюр выключен (можно переключать кнопочками) D4 - 00:384x256, 01:480x256, 10:512x256, 11:80x32 (аппаратный текст) D5 / D6 = 0 - вывод графики и цвета осуществляется из страницы, с которой работает процессор, 1 - вывод графики и цвета осуществляется из теневой страницы D7 = 0 - обычный режим когда каждая выводимая строка выводится дважды, 1 - режим, когда соседние строки берутся из основной и теневой страниц (аппаратный гигаскрин) (вариант D6=1 D7=1 остаётся зарезервированным на будущее - так может задаваться режим "цвет на точку" в том же самом разрешении, задаваемом парой D4 и D5) FFFB / F7FB (Z80): D0 = переключатель slow/fast (можно сделать прям сразу) D1 = включает турбо-режим (2x или 4x выбирается через D0) D2 = разрешает 16-битное обращение по портам (по умолчанию старший байт будет копироваться из младшего и этот флаг это поведение отключает) D3 = разрешает порты ввода-вывода на работу независимо от памяти (будущее) D4 = разрешает кадровые прерывания (будущее) D5 = открывает ОЗУ на всё адресное пространство и чтобы это выключить, надо подёргать некий порт ввода-вывода (будущее) D6 = разрешает ISA-слоты в старшей четверти памяти C000...FFFF (все порты в адресах FFxx отключаются и чтобы включить их обратно надо подёргать некий порт ввода-вывода (далёкое будущее) D7 = разрешает акселератор Спринтера ( далёкое будущее ; )
| | | | |
тут я постарался собрать все специфические для Z80 биты в одном регистре (и все они будут реализованы когда-нибудь потом) т.е. теоретически 8080A всё ещё сможет продложать работать в новой схеме с новыми графическими возможностями, если сможет разогнаться до 3.5 МГц P.S. 16 февраля 2023 года добавил "аппаратный гигаскрин" и возможный режим "цвет на точку"
|
12 Feb 2023 23:02 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Кстати то, что основная память и память "RAM-диска" разделены друг от друга (в оригинальном MX основная память была нулевой страницей большой памяти) это может быть большим плюсом, когда мы сделаем "турбо" - тормозить проц ведь надо будет только при обращении к основной памяти, а при работе с "RAM-диском" его тормозить ненадо т.к. эта память полностью независима от видеоконтроллера и может теоретически работать на максимально-возможной частоте - короче, надо подумать...
|
13 Feb 2023 01:45 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Посмотрел внимательно даташиты на 74161 (синхронная загрузка, асинхронный сброс) и 74163 (синхронная загрузка, синхронный сброс) и получается, что в этой схеме можно использовать любую из них т.к. сброс не используется - только загрузка нулей, а загрузка в обеих этих микросхемах синхронная. Для экспериментов можно взять мою платку счётчиков (которую я заказал в 2013, а спаял в 2018) - она должна уметь до 100 МГц считать: http://www.nedopc.org/forum/viewtopic.php?f=35&t=10334&hilit=74f163&start=60(для наших скоростей нужен либо 74F163, либо 74ACT163, т.к. 74HCT163 не потянет по скорости т.к. они могут либо 20 МГц, либо 45 МГц - в зависимости от производителя)
|
13 Feb 2023 02:19 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Вот как в такой развёртке могут выглядеть некоторые другие разрешения ( это я конечно же на ZX Spectrum и Sprinter намекаю ; ) P.S. Интересно, что разрешение 384x288 имеет нативное соотношение сторон ровно 4:3, а 512x288 - ровно 16:9 (правда это уже не влезает в 16КБ)
|
14 Feb 2023 22:36 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
У меня возникла гениальная мысль! Если у нас все строки раздваиваются (одна и та же строка повторяется дважды), то почему бы не сделать режим, при котором соседние строки будут браться из разных половинок основной памяти, где сидят пикселы, и половинок памяти цвета? Эдакий "аппаратный гигаскрин", который не потребует больших аппаратных затрат - в этом случае это уже будет 512x512 с горизонтальными плашками по 8 пикселов 2 цвета из 16 либо 128x512 с произвольными 16-цветными "полуплашками" - т.е. тут можно получать уже вот такие картинки (а если аккуратно подобрать "полуплашки", то можно и ещё чётче сделать - вплоть до тех самых 512х512): P.S. А может ещё и граф.режим «Патисоник-580» поддержать? Там пишут было 192x256 при 4 цветах на точкуP.P.S. Ещё возможен режим "цвет на точку", когда при сохранении того же разрешения 512x256 и использовании обоих половинок видеопамяти и памяти цвета можно получить 16 цветов на точку: При этом правда будет несколько запутанным вывод такой картинки: - первая пара точек плашки берётся из байта в основной памяти цвета; - вторая пара точек плашки берётся из байта в основной памяти; - третья пара точек плашки берётся из байта в запасной памяти цвета; - четвёртся пара точек плашки берётся из байта в запасной памяти. т.е. программная запись из НЕПЕРЕКЛЮЧАЕМОЙ памяти 8 соседних 16-цветных точек будет выглядеть примерно так: P.P.P.S. Режим 512x512 даст возможность вывести читабельный шрифт 85x64 P.P.P.P.S. Графический режим 1111 (15) можно зарезервировать на далёкое будущее как супер-пупер продвинутый (и сейчас можно просто ребутать комп при попытке программно его установить)
|
16 Feb 2023 23:30 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Кстати если кто ещё не понял, то повторюсь - вот это: позволяет делать аппаратный горизонтальный скролл Скроллить можно хоть через все 64 кб основной памяти, однако атрибуты цвета при этом скроллиться НЕ будут, т.е. это подходит для горизонтальных "платформеров", где атрибуты имеют тенденцию повторяться по горизонтали (типа сверху голубое небо с белыми облаками, снизу серые дома и т.д.) ну а героев можно по быстрому перераскрасить по ходу пьесы...
|
16 Feb 2023 23:57 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Посмотрел какие есть синонимы в английском языке слову "Specialist": Может быть имеет смысл назвать эту реинкарнацию скажем MiniWhiz-MX2023? Или просто MiniWhiz-2023 (MW2023) ("mini" т.к. предполагается плата в формате mini-ITX либо в будущем mini-DTX)
|
17 Feb 2023 02:21 |
|
|
forthuser
Senior
Joined: 12 Jan 2023 07:26 Posts: 165
|
А, дублирующие пиксели можно брать и по псевдослучайному закону из соседних ячеек, и тогда можно и добится мерцающих цветов в изображении.
|
17 Feb 2023 04:34 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
А можно белый шум подать на видеовход телевизора и затем наслаждаться снегом
|
17 Feb 2023 20:39 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Что-то у меня такое впечатление, что твой проект далеко уходит в сторону от концепции ПК "Специалист". Это уже напоминает как "АТМ-Турбо" выглядел на фоне "Спектрума"... Где ты думаешь софт брать под такое железо? Железный Дровосек-то под свою реинкарнацию "Специалиста" совместимость по софту всё же обеспечил...
_________________ iLavr
|
17 Feb 2023 22:19 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Ну тут тоже весь софт Специалиста стандартного и MX пойдёт - "в душе" ведь это всё тот же железочеловечный спец (хотя не - софт что заточен под i8080 с его кривым DAA и обращением к портам с дублированием младшего байта адреса в старший - не пойдёт) А ещё пойдет софт с "Сябра" который под 480x256 или 512x256 написан (а вообще есть такой?) И уходит проект в сторону Спринтера естественно - в перспективе я хочу получить фичи Спринтера без Спринтера
|
17 Feb 2023 22:23 |
|
|
Who is online |
Users browsing this forum: No registered users and 33 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|