Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22758 Location: Silicon Valley
|
Попытаюсь объяснить ещё раз - доступ внешнего устройства к внутренней видеопамяти усложняет всё неимоверно - напомню, что к видеопамяти обращается не только центральный процессор спектрума (чтение и запись), но и видеоконтроллер (только чтение), который формирует картинку на телевизоре - соответственно эту самую ардуину надо будет как-то вкорячить по тактам так, чтобы она не мешала видеоконтроллеру, который в отличие от процессора остановить нельзя (иначе формирование видео исчезнет и картинка на телеке пропадёт).
|
29 Nov 2021 03:04 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Мне кажется, вы очень жестко ставите задачу, хотя я для "Специалиста" тоже хотел именно так. У оригинального Спектрума 48, какой он у вас есть, память по нынешним меркам слишком медленная и определённо медленная для поставленной вами задачи. Здесь на форуме разрабатывался клон "Специалиста" на современной статической памяти - вот с ней еще есть возможность всяких трюков "кто первым лезет в память". Со старой памятью и не меняя кардинально схемы, боюсь, ничего путного не получится...
_________________ iLavr
|
29 Nov 2021 07:54 |
|
|
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Изменю вопрос: Вы могли бы набросать схемку подключения ардуино к оперативной не-видео- памяти Спектрума? Чтобы ардуина могла брать оттуда и класть туда данные? Это хотя бы реально, раз с видеопамятью такая засада?
|
02 Dec 2021 12:58 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Если у Вас обычный старый Спектрум, а не современный новодел со статической памятью, то в нём установлена динамическая память. Эта память, даже если она физически разделена на видеопамять и не-видео-память, регенерируется всё теми же счетчиками его видеоконтроллера. В связи с этим лезть ардуиной в память древнего Спектрума с динамической памятью мне представляется задачей достаточно сложной, и поэтому набросать такую схемку я не возьмусь. Это ничего не меняет в плане сложности: видеопамять или не-видео-память...
_________________ iLavr
|
02 Dec 2021 15:29 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22758 Location: Silicon Valley
|
В большинстве клонов ОЗУ общее - и для видеопамяти и для не-видеопамяти...
|
02 Dec 2021 21:55 |
|
|
Santa
Novelist
Joined: 18 Feb 2006 08:19 Posts: 25
|
Теперь понятно, спасибо. Жаль.
|
02 Dec 2021 23:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я просто помню, что у какой-то модели было 16К отдельно, а другая линейка отдельно. Во времена начала ZX-Спектрум барыги продавали на рынке две линейки "целые" и "половинки". Причем, если я правильно помню, при обращении к 16К с видеопамятью организовывалась задержка процессора, а в остальную память он без задержки лез... Но это никак не помогает облегчить ситуацию с вопросом топикстартера. Висела-то вся память всё равно на одной шине.
_________________ iLavr
|
03 Dec 2021 11:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22758 Location: Silicon Valley
|
А что жаль то? Я вначале объяснил как это делают другие - надо просто сделать также
|
03 Dec 2021 15:22 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Как ты объяснил, даже я сам не понял в чем смысл того варианта "графического сопроцессора". По твоему объяснению быстрым микроконтроллером на внешней шине мы отслеживаем обращения z80 к своей видеопамяти и дублируем его действия в специальной памяти микроконтроллера, из которой сформирован видеовыход на современный VGA. Так? Получается, что процессор z80 всё равно по-старому должен рисовать в видеопамяти - эту нагрузку мы с него таким "графическим сопроцессором" не сняли. Я правильно твою мысль понял?
_________________ iLavr
|
03 Dec 2021 16:23 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22758 Location: Silicon Valley
|
Ну как не сняли? Сняли нагрузку - он же команды теперь внешнему "сопроцессору" подаёт и он всё рисует. Разве что Z80 теперь это нарисованное прочитать не сможет т.к. будет читать только свою видеопамять - тут как бы получается 2 слоя графики - одна родная спектрумовая и вторая внешняя, наложенная на спектрумовую - юзер видит на дисплее одно (графический план с 3D объектами, альфаканалом и т.д.) поверх другого (обычный спектрумовый экран). По аналогичному принципу работает видеокарта для ZX-Spectrum, которая называется SPECTRA: http://www.fruitcake.plus.com/Sinclair/Spectrum/Spectra/SpectraInterface.htmПримеры графики: http://www.fruitcake.plus.com/Sinclair/Spectrum/Spectra/SpectraInterface_ScreenGallery.htm
|
03 Dec 2021 18:54 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну я ж про это и говорю - обычный спектрумовый экран рисует всё тот же z80, как и было без графического сопроцессора. Но теперь z80 ещё и замедляется, отдавать команды графическому сопроцессору. Я всё же как-то предполагал, что графический сопроцессор только получает команды от основного z80. А сам z80 больше рисованием в видеопамяти не занимается.
_________________ iLavr
|
03 Dec 2021 19:20 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22758 Location: Silicon Valley
|
Ну z80 всё также пишет, а "сопроцессор" ловит - никакого противоречия в этом нет. И при этом никто никого не тормозит. Просто проц обратно сможет прочитать только то, что записал в свою память, а не то, что на экране будет пользователю показываться.
|
03 Dec 2021 21:27 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Блин... мы как глухой и немой разговариваем... Я считаю, что если есть графический сопроцессор, то центральный процессор z80 больше не должен писать в видео-ОЗУ и заниматься отрисовкой графики от слова СОВСЕМ! Он должен только делать расчеты и выдавать команды графическому сопроцессору типа: поставить точку (цвет, координаты), нарисовать линию (цвет, координаты), нарисовать круг (цвет, координаты), нарисовать полигон (цвет, координаты), и т.п. В этом случае сам центральный процессор z80 больше ничего не изображает в видео-ОЗУ. Это я так считаю. В этом случае ото всех расчетов по вычислению точки в видео-ОЗУ, алгоритмов Брезенхэма и т.п. центральный процессор z80 ОСВОБОЖДЁН!
_________________ iLavr
|
04 Dec 2021 09:18 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22758 Location: Silicon Valley
|
Ну для меня например очевидно, что новый видеовыход должен уметь выводить старую графику тоже (иначе как пользователь сможет запустить программу, использующую этот новый графический сопроцессор, если не сможет увидеть вводимые LOAD "" на новом дисплее) - поэтому и выходит, что надо ловить запись в обычную видеопамять имитируя обычный ZX-экран (таким образом даже получится например переделывать старые ZX-игры, постепенно добавляя в них новые слои новой графики поверх старой).
|
04 Dec 2021 14:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Так я тебе об этом и говорю, что ты, как и топикстартер, хотите поддерживать и старую графикуи новые возможности, которые даст "сопроцессор". А я хотел для "Специалиста" совсем другой графический сопроцессор, который бы совсем освобождал бы центральный процессор от вывода графики. Если ты хоть раз смотрел процедуру вывода точки в заданное место растрового экрана, то это весьма непростая процедура. И её лучше поручить отдельному быстрому процессору. Совместимости по всем программам, конечно же, не будет. Но совместимость с программами на языке высокого уровня остаётся вполне. Все эти PSET(...), LINE(...), BOX(...), CIRCLE(...) как и PRINT(...) можно сразу отдавать графическому сопроцессору. В этом случае, я считаю, производительность поднимется значительно.
_________________ iLavr
|
04 Dec 2021 15:05 |
|
|