zst, причем, на 100-й странице.
Вид для печати
zst, причем, на 100-й странице.
Off top
Zst что означает ваша подпись? Напишите в ЛС чем помочь?
Для упрощения подключения к монитору можно сделать скандаблер. Кадровую частоту оставить 50 Hz, а частоту точек и строчной развертки удвоить.
Для кварца 14 MHz есть выбор из таких режимов 640x480 VGA:
Кадровая 50 Hz, INT 50 Hz, Z80 3.5 MHz.
Кадровая 60 Hz, INT 60 Hz, Z80 3.5 MHz.
Кадровая 60 Hz, INT 30 Hz, Z80 3.5 MHz.
Кадровая 67 Hz, INT 67 Hz, Z80 3.5 MHz. Точки квадратные.
Кадровая 67 Hz, INT 33 Hz, Z80 3.5 MHz. Точки квадратные.
Если поставить более быстрый Z80, то его можно будет использовать на частоте в 2 или 4 раза быстрее.
Смена частоты Z80 или INT может привести к изменениям в скорости игры.
INT 30 или 33 Hz даст больше времени для построения в буфере следующего кадра. Если положение INT перенести в правый нижний угол SCREEN, то времени для копирования до луча будет больше.
Какой режим лучше ?
На мой взгляд режим "Кадровая 67 Hz, INT 33 Hz, Z80 3.5 MHz. Точки квадратные." позволит в будущем легко сделать плавные игры с 33 fps.
Для копирования буфера с новой графикой на экран надо использовать автомат на счетчиках и дополнительную память для загрузки параметров копирования. Наверно более универсально записать один раз в дополнительную память адреса отрезков в буфере и экране. А потом данные для очередного копирования будут читаться на более высокой скорости. Проще заранее посчитать и загрузить в таблицу.
Для простоты автомата можно байты парами записывать.
Первый байт - что делать: увеличивать или загружать и какой счетчик,
а второй байт - байт для загрузки части адреса или не использовать.
Если байты идут последовательно, то в первом байте - соответствующее число.
Во втором байте: по два бита на счетчик - что делать.
Ориентировочно:
00 - не менять
01 - +1
10 - -1
11 - перенос из младшего счетчика
Можно сделать хардварное перетасовывание битов приемника чтоб писать в видео память как
будто она линейно расположена. Тогда к экрану лучше обращаться не по адресам, а по координатам в байтах и аппаратно биты переставить.
А как можно сохранить часть фона перед рисованием в буфер спрайта, а потом восстановить ? Самое простое - сохранить весь буфер, но в друг это не для всех игр подойдет. Если буфер линейный наверно можно змейкой. Указать вначале адреса, а потом +-1.
Может проще все игры под линейный буфер переделывать для однотипности ? Линейный буфер также можно весь змейкой копировать - так быстрее. Линейный буфер упрощает переход к байту вниз. Если переставить биты аппаратно, то даже экран становится линейным. А вот если в буфере строки идут подряд по 32 байта, то для перехода к байту вниз надо прибавить 32 к адресу...
Можно для этого случая сумматор добавить, но если игру переделать под линейный буфер, то и рисование графики в буфер ускорится.
Если линейный буфер сделать с адреса 0000H, то еще проще и быстрее.
А если еще ускорить z80, то будет все рисоваться плавно и быстро.
вот тут описуетсо как из за кастрированного спектрум 16К
пришлось выкручиваться и сделать то что было сделано
http://hype.retroscene.org/blog/891.html
менее читабельная но более подробная статья
http://zxpress.ru/article.php?id=18217
клепались бы сразу одни 48-е
и возможно бы адресация была линейной
а проц бы стоял на вайте при записи в видео память пол строки пока читает видео контролер
тк на это, на фоне предыдущих zx80\81, могли бы и положить...
- - - Добавлено - - -
кстате смотрю на схему резинового спека
и примечательно то
что мы называем
"медленная" память на самом деле быстрая 150ns
а то что называем
"быстрая" память на самом деле медленная 200ns :v2_dizzy_vodka:
Забавно читать, как одни обосновывают то, что сделали другие. Причём сделали значительно раньше обоснования.
Всё намного проще: младший байт (именно байт, не 7 бит) адресов пикселей и атрибутов полностью совпадает.
И сделано это как раз для удобства манипуляций с экраном, а вовсе не для регенерации памяти.
И, разумеется, для увеличения скорости этих манипуляций - 16битная математика на восьмибитке ресурсозатратна.
ты ВООБЩЕ понимаешь о чем там написано?
именно 7 бит а не байт
у 4116 только 7 адресных линий
вместимость 128*128 = 16384 бита (2К)
кури мат часть
вот те самые 16 килобайт "медленной" памяти
на схеме резинового спектрума
https://jpegshare.net/images/ac/1b/a...f152c62363.png
слава богу хоть в наших спектрумах
нет памяти с тремя напряжениями питания...
построение экрана уже многократно обсуждалось
"Когда контроллер дисплея считывает два байта, адрес байта атрибутов выставляется полный, 14 бит двумя циклами по 7 бит RAS-CAS. Чтение байта пикселей выполняется сразу вслед за этим в страничном режиме, одним циклом CAS. При этом выставляются только старшие 7 бит адреса, младшие 7 бит используются от атрибутов. Тем самым вместо долгого цикла из RAS-CAS-RAS-CAS происходит более короткий цикл RAS-CAS-CAS."
...
патент на именно такой экран можно нагуглить
У всех асинхронных DRAM половина внутренних адресных линий защёлкивается по RAS, поэтому без разницы 16 или 64к.
Младший байт для экрана Спектрума всё равно одинаков, в пределах одного столбца экрана изменения будут только по старшему байту.
Научись считать.
Спасибо, нагуглил.
Если речь о патенте за № EP0107687B1, то ни слова про режим RAS/CAS/CAS там нет.
Это патент на построение цветного изображения с разделением памяти на область маски (память пикселов) и область цветовых данных (память атрибутов), причём конкретно размером 192х256 с кодированием цвета тремя битами на передний(INK) и задний (PAPER), а также бит уровня общей яркости и бит мерцания.
Про PAGE MODE RAED ни единого слова нетути... иначе этот патент нарушал бы целый ряд других патентов, например US5587964A.
И если в фирменном Спеке действительно память читается по единому RAS и двум CAS, то это исключительно частный случай построения фирменного Спека.
Кстати, а это на самом деле так?
Кто-нибудь проверял?
Дык ты погромист - тебе и видней.
Помнится в те времена это декларировалось именно в таком ключе.
вот вам `свежайшее` интервью с Альтвассером
https://paleotronic.com/2018/10/01/a...ard-altwasser/
........
Использование трех байтов на символьный пиксельный блок для цвета и атрибутов и восемь байтов для пиксельных данных было предложено тремя наблюдениями. Во-первых, цветовое разрешение человеческого глаза меньше, чем для яркости. Во-вторых, стандарт цветного телевидения PAL, признающий эту разницу, имеет намного более низкую цветность, чем ширина полосы яркости. В-третьих, общепринятые и популярные реализации телетекста в Ceefax и Oracle допускают цвет на уровне персонажа, с передним планом, фоном и мигающим. Желание использовать наименьшую возможную память и прецедент цветового уровня символов телетекста привели непосредственно к принятой схеме.
........
Большинство микрокомпьютеров расположили свою палитру в порядке RGB, палитра Spectrum несколько отличается, так как цвета организованы путем увеличения яркости. Можете ли вы прокомментировать, почему был сделан этот выбор?
Вероятно, это стало результатом моего внимания к выходам ULA яркости и цветности, Y, U & V, для которых я разработал простой трехканальный ЦАП, реализованный в ULA и защищенный патентами GB19820011723, EP0107687 и WO8303916.
Спасибо!
GB19820011723, к сожалению, найти не удалось.
EP0107687 ссылки есть в теме, открытой Вами здесь
https://patentscope.wipo.int/search/...Num=4&maxRec=4
WO8303916 - вот, что по нему попалось
https://patentscope.wipo.int/search/...IO&maxRec=1000
далее оттуда же, с последней вкладки.
https://patentscope.wipo.int/search/...65V8tZZY6LNZ0A
https://patentscope.wipo.int/search/...Yomeyrzn-fIiDQ
Где там хоть одно слово ("схема аль чертёж"(с)) об адресации?
Сомневаюсь, что в ненайденом документе что-нибудь есть.
Кстати, действительно. Убили двух зайцев:
1. Сократили на пол цикла обращение к ОЗУ, при этом PM как правило гораздо быстрее работает, т.к. precharge у DRAM самый длинный процесс и он только при RAS (вся строка регенерируется). Эту же особенность используют с момента появления этого типа памяти в IBM PC, так как х86 большой разрядности обычно требует сразу параграф, который линеен.
2. При печати символа 8х8 с атрибутом на экран, нужно 1 раз вычислить младший адрес, он будет общим и для атрибутов и для графики. А потом манипулировать только старшим, заполняя сначала атрибут а потом 8 строк графики. Очень толково и на первый взгляд не очевидно.
307200 раз в секунду
- - - Добавлено - - -
дык это буржуйские патенты
у них можно лить воду про сферическое устройство не приводя детальной схемы
а потом под это описание подходит 100500 новых девайсов
никаким образом к поделки отношения не имеющих
- - - Добавлено - - -
дык это буржуйские патенты
у них можно лить воду про сферическое устройство не приводя детальной схемы
а потом "под это описание подходит" 100500 новых девайсов
никаким образом к поделки отношения не имеющих
Изначально это был домашний компьютер с бейсиком. Это как расширенный инженерный программируемый калькулятор. Скорость вывода символа тут играет первостепенную роль. А то, что на этом калькуляторе стали пилить игры - это уже второй вопрос, за пределами юрисдикции разработчиков. Ведь и на программируемых калькуляторах играли и печатали игровые программы в журналах. Так что видеоускоритель нужен тем, кто хочет играть на этом калькуляторе, т.е. вам. Собственно, вы же и пилите тут Метеор, или я не прав?
просто бред
"калькулятор" должен быстро считать то что на бумашке считать 15 лет
главное через три часа написать результат на экране
а за сколько миллисекунд нарисуется результат абсолютно не важно
в zx80 на этот экран вообще положили
или считаем или экран
можошь найти посмотреть видео
как при вводе с клавиатуры каждого символа
генерация видео сигнала отключается нафик вообще
3Ы
у мя на неком casio fx-83gt plus
на время расчета на экране тожо пустота
да и отрисовка достаточно инертная
но сам ввод не тормозит
- - - Добавлено - - -
вот ввод с клавиатуры это самое главное
он не должен тормозить
а этображение введеного может и задержаться
и не должно быть этих *****х буферов
когда девайс тормозил торомозил
а потом когда уже не актуально ВНЕЗАПНО вывел все что ты натыкал пока он не подавал признаков жизни
да еще и не туда куда это было нужно...
ПРОСТО УБИВАТЬ УРОДОВ ЗА ЭТУ ГАДОСТЬ НАДО
Не "тут", а "там". Бейсик в это время пихали в каждый первый домашний комп. Никого им было не удивить, потому изначально Спектрум подавался как "улучшенный" домашний комп С ЦВЕТНОЙ ГРАФИКОЙ (что даже отразилось в его названии) по сравнению с предшественниками. Только графика почему-то оказалась оптимизирована вовсе не под новые графические задачи (в каковые входят не только игры) - а под вывод устаревшего неулучшенного текста жёстко заданного размера. Очень бестолковое "улучшение".
фанатикам "оптимизации экрана для вывода букоф" видимо ничего доказать нельзя...
а вот то что без этой оптимизации
частота проца 16К спека просела бы аж до ~2,355 МГц ничего?
а так эффективаная у него дето ~2,847 МГц
+20%
и ладно бы она просто просела
а как бы "повысилось" качество считывания с магнитофона при этом
если бы проц по пол строки тупо стоял вообще...
скорости записи они бы тоже прикрутили...
- - - Добавлено - - -
Кстате может по этому? и имеем 256х192 (чтоб можно было делать кастрированную 16К резинку)
хотя "медленной" памяти хватило бы аж на 400х288...
48к вполне бы тянул 320х240 без гигантского бордюра на пол экрана
(нет не тянул бы
чтоб закинуть один байт в экран
пришлось бы стоять до 160 тактов на вайте
пришлось бы снова перетасовывать экран так чтоб оптимизировать чтение видео контролером)
- - - Добавлено - - -
Впринципе
zx81 кроме большего экрана и аппаратного скролла из коробки
больше не по каким параметрам не может тягаться с 48к спектрумом...
да и те уникальные возможности которые у него есть
раскрываются достаточно тяжело...
и воощем пока под оно научились хоть как то кодить время zx80\81 подошло к концу
да и какой не какой
у спектрума появился хоть какой то цвет
а он то очень даже полезен даже для "калькулятора"
Хоть и не являюсь фанатиком как оптимизации экрана для вывода букоф так и этого вашего Спецтрума в целом отмечу, что это сейчас вам, имеющим статическое ОЗУ на 512КБ со временем доступа 15нс легко обсуждать корявость организации Спецтрума Синклером. А вы начните думать в рамках конца 70х, с поправкой на элементную базу, доступную именно тогда. Ведь даже через 10 лет, в конце 80х, уже появился наш клон, полностью собранный на отечественной элементной базе, за исключением процессора, и тайминги которого практически идеальны и равномерны по сравнению с оригиналом.
не правда
нет у меня таких SRAM-ов
самые жирные что у меня есть это жменя w24512ak-15 на 64К
до щас легко обсуждать
я вообще думаю что можно было сохранить и хорошую адресуемость видео памяти при 3 обращениях к ней
щас кручу разные варианты как можно было бы сделать
а тогда это могло быть первое попавшееся решение проблемы
и что ее так и решили
и теперь что маємо то маємо...
А то!
поменять старший и младший байты местами и манипулировать младшим байтом. ;)
Экран, правда при этом разбежится кусками по всей памяти, но это ерунда!
Или ещё лучше: байт на точку.
Ну и что, что при этом от озу вообще ничего не останется даже под стек, все 48к станут экраном, зато линейная адресация, 256 цветов на точку и никакого клешинга!:biggrin:
По большому счёту весь экран можно адресовать портами ввода/вывода, а память освободить под буферы и код. Часть правда займут ПП вывода изображения.
И ещё 16к портов останется под нужды пользователя.
Аппаратно никаких проблем нет - вместо MREQ использовать IORQ и полную адресацию.
Как идейка?
Ради линейной-то адресации?
Ведь стОит, однозначно!
:)
P.S.
Особенно монументально оно будет выглядеть на дискретной логике.
По-Церетелевски.
:v2_dizzy_roll:
например
Скрытый текст
тут число атрибутных строк 28, но можно и меньше отображатьКод:столбцы по 256 байт (и пиксели, и атрибуты столбца)
14-битные адреса в 16k странице:
ccccccH ppppxxx - пикселей
ccccccH HHHaaaa - атрибутов
где
cccccc - номер столбца
H - верхняя или нижняя половина
(все биты H равны между собой)
Hppppxxx - возрастание от #10 до #EF
(xxx - номер линии в знакоместе)
HHHHaaaa - убывание от #0D до #F2
(с переходом через ноль декрементом)
(aaaa = инверсия pppp)
совпадают старшие биты
то есть RAS = ccccccH
движение по горизонтали:
inc/dec h
движение по вертикали:
inc/dec l - для пикселей
dec/inc l - для атрибутов
адрес атрибутов из адреса пикселей:
ld a,l:sra a:sra a:sra a:xor #0F:ld l,a
адрес пикселей из адреса атрибутов:
ld a,l:add a:add a:add a:xor #78:ld l,a
еще можно перераспределить байты между атрибутами и пикселями
вплоть до мультиколора высотой 128 пикселей
число столбцов - сколько влезет в экран по ширине
правда, при отображении RAS теперь не перебирает все комбинации
но для полного рефреша должно хватить +1 холостого чтения на сканлайн
[свернуть]
конечно не совсем то тк 8К с дырками (что для 16к машины не оч)
но натолкнул на мысли
что не обязательно атрибутам
считаться от того же счетчика
или можно инвертировать
да и можно наверно даже положить на линейность атрибутов
А я как-то не так сказал? о_О
Сейчас :
по горизонтали:
inc/dec l (диапазон 0-31)
движение по вертикали:
inc/dec h в пределах знакоместа (диапазон 0-7)
l+32/l-32 по строкам
Экран разлетелся кусками по всем 16к, ну и пёс с ним, рефреш, ну, допустим, обойдём.
Что это даёт?
ещё такая идейка - включаем какой-то бит в порту - теперь вся запись в память будет идти только в видеопамять (49152 байт которой - байт на точку) и в основную ничего не пишется - но теперь уже процессор запарится рисовать того же Дизю )
Память в ZX Spectrume по древности была как у Радио-86РК с тремя питаниями. Ужас. По сравнению с ZX Spectrumom Ленинград - идеальный компьютер. Никакой ULA не надо, нет антенного выхода, нет медленной памяти, нет атрибутов, всего 8 микросхем РУ5, нет мембранной клавиатуры, нет стабилизатора +5В внутри компьютера, нет преобразователей питания, нет динамика, зато есть кнопка RESET, кемпстон джойстик и выход RGB, а звук идет сразу на телевизор и игры бесплатные.
LENINGRAD-2012 конечно еще лучше Ленинграда. Устранены упрощения схемы и вместо ПЗУ стоит FLASH на 128К. И схема чтения с магнитофона на К561ЛН2 и можно подключить SEGA джойстик с AUTOFIRE и есть медленная память и атрибуты и правильный INT и правильные синхроимпульсы и разъем ZX-BUS и плата меньшего размера и развертка Pentagon-128 и разъемы современные на плате и выход на SCART.
Жалко, что технология изготовления механических кнопок в России утеряна... И китайцы не делают. Зато есть отличные старые PS/2 клавиатуры по отработанной технологии. Которые по качеству лучше, чем современные с низким ходом кнопок.
Сейчас еще проще делать компьютеры. Память 512K обычно 10 ns. 128К обычно 45 ns. Никая регенерация не нужна. Лепи какую хочешь адресацию.
Если Alone использовал в игре линейный буфер, значит это самый быстрый способ, значит надо сделать вместо ПЗУ линейный буфер и все игры переделывать под него.
А как насчет выхода сразу на VGA 640х480 67 Hz и INT 33 Hz ?
тогда уже проще запилить идеальный 384х256
чот не пойму
а что мешало перепутать адресные линии только прямо перед самой памятью
чтоб писать вроде бы как линейно
неужели правда убивали 2-х зайцевКод:01 0Й ЙYYY yyyx xxxx
FE DC BA98 7654 3210
0ЙЙyyyY YYxxxxx
CAS-DCB765A RAS-9843210
011ЙЙY0
CAS-DCB765A
или с ходу не додумались
или я что то туплю?
Наверно времени не было додуматься. Нам сейчас со стороны виднее, чем им там тогда. А Орион мог бы быть лучше Спектрума, если бы сразу стоял Z80 на 3.5 MHz. Но для запуска игр Спектрума пришлось бы делать такой же экран с нелинейной адресацией, зато наши игры можно было бы сразу в линейном экране делать.
Интересно, а почему в Орион сразу весь Спектрум не добавили ? Вот был бы универсальный компьютер. И не надо было бы сейчас ничего изобретать.