PDA

Просмотр полной версии : ZXKit1 - конструктор для ZX-творчества



Страницы : 1 [2]

zx-kit
07.10.2009, 10:45
Объясните пожалуйста.

Уже наделано много загрузчиков для загрузки образов с SD и HDD. Может счастье уже есть, а я не знаю. Перечислю некоторые устройства:

1. SMUC2
2. SPECCY2007
3. UNREAL
4. WDC
5. РАЗЛИЧНЫЕ ВЕРСИИ ПЗУ TR-DOS
6. Z-CONTROLLER
7. ЭМУЛЯТОР ДИСКОВОДА ОТ JAFF
8. ZSMC
9. ДРУГИЕ

Может знающие люди перечислят особенности разных устройств, их достоинства и недостатки? Надо же знать к чему стремиться.

IanPo
07.10.2009, 11:18
7. Эмулятор дисковода - аппаратно эмулирует дисковод, подключается к шлейфу вместо дисковода. На SD-карту записаны образы дискет, кнопками выбираешь нужный (ЖК-дисплей 2 строки 16 символов) и работаешь как с обычным дисководом. Полагаю, надежнее, чем просто дисковод, не надо заклеивать окно или перемычки переставлять, чтобы он стал DD (хотя на плате эмулятора тоже есть перемычки выбора буквы дисковода). Изготавливается самостоятельно. Вроде бы пока не эмулирует защищенные дискеты или не все защищенные.

ZEK
07.10.2009, 11:37
Вроде бы пока не эмулирует защищенные дискеты или не все защищенные
Сомнительно, этот вид эмуляторов должен работать с потоком MFM а значит защиты должны работать

Дмитрий
07.10.2009, 11:41
heroy, он только недавно стал понимать формат FDI.

zx-kit
07.10.2009, 11:46
heroy, он только недавно стал понимать формат FDI.

Может есть какой-нибудь образ TRD, на котором можно сравнить все указанные и неуказанные загрузчики?

SMT и Максагор нам помогут ?

Предлагаю конструктив - плата под слот ZX-BUS, на которой Cyclone I и SD-CARD. Должна заменить плату контроллера дисковода NEMO вместе с дисководом.

Образы выбирать с помощью любой клавиатуры или джойстика на стандартном экране Спектрума.

IanPo
07.10.2009, 11:57
heroy, http://zx.pk.ru/showpost.php?p=220071&postcount=328
Я так понял, что не все защищенные диски поддерживаются.
Да, и речь шла про отдельный эмулятор, а не USB-версию,
где образ грузился с PC.

zx-kit
07.10.2009, 12:42
А может сделать ZX-CYCLONE-BOARD ?

Сейчас CYCLONE II стоит как MAX7000. Можно взять многоногий циклон, соединить половину ног с ZX-BUS, а вторую половину вывести как в DE1 на разъемы IDC. Тогда различные контроллеры можно было бы делать на базе одной платы, подключая дочерние платы.

Например, с помощью шлейфа подключить плату с разъемом для SD карты. Или добавить плату с ОЗУ...

ZEK
07.10.2009, 12:46
Сейчас CYCLONE II стоит как MAX7000.
А циклон 3 дешевле в новых партиях чем второй.

Black_Cat
07.10.2009, 12:48
zst, ты потихоньку дозреваешь.. ещё немного и дозреешь, что чем менять платы в слотах - проще менять прошивку в FPGA :)

zx-kit
07.10.2009, 12:54
А циклон 3 дешевле в новых партиях чем второй.

Его наверно не согласовать с ZX-BUS. Поди питается от 0.7В.

---------- Post added at 14:54 ---------- Previous post was at 14:53 ----------


zst, ты потихоньку дозреваешь.. ещё немного и дозреешь, что чем менять платы в слотах - проще менять прошивку в FPGA :)

Можно в материнскую плату вставлять несколько перепрограммируемых контроллеров на циклонах. В один из них можно зашить Z80. Но все в один лепить не надо.

ZEK
07.10.2009, 13:15
Его наверно не согласовать с ZX-BUS. Поди питается от 0.7В.
У него теже возможности по согласованию как и у второго.
Питание ему надо
1.8 ядро 2.5 PLL и вплоть до 3.3v IO

Вообще можно 3 циклон + модуль питания + SDRAM + IDC разъемами всунуть на плату с двумя IDC40 и типо будет переходник под шаг 2.54
Платка небольшая получается 60х60мм
Этот переходник можно тыкать на макетки с ISA к примеру

zx-kit
07.10.2009, 13:26
У него теже возможности по согласованию как и у второго.
Питание ему надо
1.8 ядро 2.5 PLL и вплоть до 3.3v IO

Вообще можно 3 циклон + модуль питания + SDRAM + IDC разъемами всунуть на плату с двумя IDC40 и типо будет переходник под шаг 2.54
Платка небольшая получается 60х60мм
Этот переходник можно тыкать на макетки с ISA к примеру

А на плату, которая втыкается в слот припаять ответную часть - один IDC40-маму.

А прошивается он с помощью ByteBlaster MV?

Еще генератор надо на эту плату. А SDRAM зачем? Можно ведь статику поставить.

В принципе получится почти DE1. Только не надо клавиатуру, мышь, видео, т.к. это уже есть в Спектруме.

ZEK
07.10.2009, 13:42
А прошивается он с помощью ByteBlaster MV?
Да, он поддерживает все режимы + немного отсебятины.
Можно даже на эту плату в тех же размерах всунуть USB Blaster (с возможностью прошивать не только циклон но и внешние девайсы), прикидывал разводил с CY7C68013A но он дороговат


Еще генератор надо на эту плату. А SDRAM зачем? Можно ведь статику поставить.
Генератор не проблема, а SDRAM просто дешево и сердито

zx-kit
07.10.2009, 13:56
Да, он поддерживает все режимы + немного отсебятины.
Можно даже на эту плату в тех же размерах всунуть USB Blaster (с возможностью прошивать не только циклон но и внешние девайсы), прикидывал разводил с CY7C68013A но он дороговат


Генератор не проблема, а SDRAM просто дешево и сердито

Память то на Спектруме есть, а контроллерам не все м нужна, может только для видеокарты и буфера для SD. Для этих целей хватит 1-2 Мб.

Для загрузчика с SD можно сделать двойную адресацию к SD. Чтобы доступ был, как в Z-контроллере и при основной работе, как в BDI.

Black_Cat
07.10.2009, 14:21
Но все в один лепить не надо.:) а какая разница, если в FPGA несколько Спеков сразу влезает :)

Addison
09.10.2009, 14:00
Народ, а по корпусам есть какие-то концепции?
А то всяких компьютеров полно наделали, а корпуса ни одного.

Romanich
10.10.2009, 13:00
Народ, а по корпусам есть какие-то концепции?
А то всяких компьютеров полно наделали, а корпуса ни одного.

А зачем технофетишисту корпус? :v2_laugh:

Если чё, я потом напишу концепцию про корпус... точнее про его ненадобность :v2_lol:

Addison
10.10.2009, 15:09
Если чё, я потом напишу концепцию про корпус... точнее про его ненадобность
Корпус такая же важная часть, как и сама плата. Тем более для спектрума, который моноблочный (клавиатурный) компьютер. Был бы корпус, многие поделки могли бы перерасти в законченный компьютер.

zx-kit
15.10.2009, 09:52
1. Каков процент совместимости данных устройств загрузки ?

SMUC2
SPECCY2007
UNREAL
ZSMC
vTRDOS

2. Допустим, если SMUC2 не на 100% совместим с загрузчиками, рассчитанными на BDI, можно ли это исправить, изменив код в ПрофПЗУ?

molodcov_alex
15.10.2009, 14:53
По просьбе zst выкладываю исходник.
Все что оно делает, на сколько я помню - выводит картинку и то без синхронизации. Ну и удваивание строк для VGA.
Внимание номер раз: исходник писан на Verilog.
Внимание номер два: т.к. я не читал ни одной книги по Verilog\VHDL\AHDL написанное может оказаться бредом сумасшедшего.

kndbbs AKA KND
19.10.2009, 00:02
Но сейчас нас видеоконтроллер не должен интересовать - он еще не спроектирован...

Я мало чё понял что вы тут обсуждаете...

А нельзя ли взять обычную PC Видяху ISA Или PCI?

zx-kit
19.10.2009, 00:59
Я мало чё понял что вы тут обсуждаете...

А нельзя ли взять обычную PC Видяху ISA Или PCI?
Тут обсуждается многоплатный конструктив компьютера. И периодически разные блоки для него. Видеокарта обсуждается с позиции подключения к остальной части компьютера.

Cпектрум простой компьютер - для него хотя бы сделать видеокарту с аппаратным копированием блоков на экран. Достаточно режима 256х192х15 цветов на точку.

zx-kit
13.11.2009, 14:46
http://s61.radikal.ru/i174/0911/0b/8a0cfda9d2d5t.jpg (http://radikal.ru/F/s61.radikal.ru/i174/0911/0b/8a0cfda9d2d5.jpg)

http://i074.radikal.ru/0912/ae/f0de4e1e51det.jpg (http://radikal.ru/F/i074.radikal.ru/0912/ae/f0de4e1e51de.jpg)

SpecialistMK87
25.11.2009, 01:57
вообще такая архитектура для персональных компьютеров была весьма популярна до 1976 года. Недостаток (для 1976 года) - высокая стоимость и низкая надежность всего компьютера в сборе. Когда Возняк разрабатывал свой Apple I он как раз и стремился уйти от такого ;) Даже разъемов расширения только два маленьких поставил.

Сейчас многоплатный конструктив часто можно увидеть у индустриальных ПиСи

s-g-t
02.02.2010, 23:51
Поддержу sk, voxel, psb и остальных. У вас отсталось не так много юзеров, но они есть! К примеру, я... Зачем мне покупать какую-то непонятную бяку? Ведь я хочу купить завершенный комп, который только осталось включить в розетку? зачем? Просто zx это школа, которую я прошел и я хочу, чтобы все азы мой сын прошел именно на этой платформе.

zx-kit
05.04.2010, 21:47
Время ПЗУ и FLASH проходит. Сейчас удобнее загружать нужный образ ПЗУ c внешнего носителя. Предлагаю следующую конструкцию и алгоритм работы эмулятора ПЗУ. Вместо ПЗУ подключить цанговую панельку SCLM-28, к которой через шлейф подпаяна плата эмулятора ПЗУ. На плату подать еще несколько сигналов управления с Z80. Для Спектрума в качестве внешнего носителя можно применить SD-карточку. На плате разместить ОЗУ для загрузки образов, многоногий микроконтроллер, SD-карточку и мультиплексоры.

Дополнительная кнопка будет сбрасывать микроконтроллер на плате эмулятора ПЗУ. Начав выполнять свою программу, микроконтроллер будет устанавливать сигнал сброса для Z80 и других устройств Спектрума. После этогого микроконтроллер переключает свои порты, подключенные к шинам адреса и управления Z80 на вывод и может хозяйничать на шинах компьютера вместо Z80 и формировать сигналы для записи образа в ОЗУ c SD. Старшие адреса и сигнал для записи на это ОЗУ нужно будет подавать через мультиплексоры, которые будут коммутировать сигналы страниц ПЗУ, которые берутся с панельки, и сигналы, формируемые микроконтроллером.

После загрузки образов ПЗУ микроконтроллер переключает порты на вход и снимает сброс с Z80 и портов Спектрума. При этом начинается обычная работа компьютера. На ОЗУ подаются те же сигналы, что раньше подавались на ПЗУ. Только отключается сигнал записи.

Работа с SD уже реализована на микроконтроллерах ATMEGA. Также атмега хороша тем, что для ее прошивки можно собрать простой программатор, состоящий из одной микросхемы и резисторов, в качестве микроконтроллера применить ATМEGA64 или ATMEGA128.

Как вариант, SD можно подключить к шинам Z80 с помощью дополнительной схемы типа Z-контроллера. Когда Z80 сброшен, c SD будет работать микроконтроллер на плате эмулятора ПЗУ. Во время нормальной работы доступ к SD будет иметь Z80. Названия файлов образов ПЗУ могут быть ROM-00.bin, ROM-01.bin, ROM-10.bin и ROM-11.bin.

Alex_NEMO
06.04.2010, 11:15
ЭМУЛЯТОР ПЗУ/FLASH
Время ПЗУ и FLASH проходит. Сейчас удобнее загружать нужный образ ПЗУ c внешнего носителя. Предлагаю следующую конструкцию и алгоритм работы эмулятора ПЗУ. Вместо ПЗУ подключить цанговую панельку SCLM-28, к которой через шлейф подпаяна плата эмулятора ПЗУ. На плату подать еще несколько сигналов управления с Z80. Для Спектрума в качестве внешнего носителя можно применить SD-карточку. На плате разместить ОЗУ для загрузки образов, многоногий микроконтроллер, SD-карточку и мультиплексоры.
Вадим, а стоит ли? По крайней мере, пока? Мысль, конечно, интересная, но дорогая в итоге получится!
29С020 стоит порядка 120 рублей(это сейчас даже дешевле доступных SD-карт). Пусть через год-два она станет 200-250 р.
Atmega64 -160...240 руб., Atmega128 - 240...450 руб. + SD-карта 2Гига - около 200 р., озушка - ну пусть 100р. + плата "заводская" - 100-150 руб. Итого рублей 600-700 по самым скромным подсчетам...
Я тут попроще мучу девайс. Пока назвал его "ROM-Switcher". Будет "рулить" 2-мя старшими разрядами ПЗУ для переключения "страниц". Напромер, в 48к вместо 27128 ставим 27512 или 27256 и имеем на борту и "стандартный" Бейсик 82 года, и турбо-прошивку 90-х годов и ещё что хотите. Переключение одной кнопкой, по кольцу - 0 - 1 - 2 - 3 - 0 и т.д. Индикация или на один семисегментник или на одиночные светодиоды. В случае "больших" компов, с применением 27512, можно так же ставить 29С010 или 29С020 и так же иметь 2 или 4 варианта разных наборов ПЗУ, переключаемыз одной кнопкой. "Сердце" девайса - PIC12F683(SO8), можно переделать под почти любой другой из 8-ми ногих PIC12xx. вывод на индикатор осуществляется через регистр сдвига типа 74хх164(ИР8) или СD4094(ПР1).

zx-kit
06.04.2010, 11:53
Вадим, а стоит ли? По крайней мере, пока? Мысль, конечно, интересная, но дорогая в итоге получится!
29С020 стоит порядка 120 рублей(это сейчас даже дешевле доступных SD-карт). Пусть через год-два она станет 200-250 р.
Atmega64 -160...240 руб., Atmega128 - 240...450 руб. + SD-карта 2Гига - около 200 р., озушка - ну пусть 100р. + плата "заводская" - 100-150 руб. Итого рублей 600-700 по самым скромным подсчетам...

Тут конечно дешевле не получится. Это пока концепция. Зато не надо прогромматор делать, если нет. Можно девайс еще усложнить и добавить управление страницами ОЗУ, тогда эту ОЗУ можно использовать для расширения 128к в компах с 48к. А можно из него попробовать сделать расширитель 128к+AY+джойстики для Speccy2007. Это пока прикидки. Для Спектрума что-то дешевое сделать сложно.


Я тут попроще мучу девайс. Пока назвал его "ROM-Switcher". Будет "рулить" 2-мя старшими разрядами ПЗУ для переключения "страниц". Напромер, в 48к вместо 27128 ставим 27512 или 27256 и имеем на борту и "стандартный" Бейсик 82 года, и турбо-прошивку 90-х годов и ещё что хотите. Переключение одной кнопкой, по кольцу - 0 - 1 - 2 - 3 - 0 и т.д. Индикация или на один семисегментник или на одиночные светодиоды. В случае "больших" компов, с применением 27512, можно так же ставить 29С010 или 29С020 и так же иметь 2 или 4 варианта разных наборов ПЗУ, переключаемыз одной кнопкой. "Сердце" девайса - PIC12F683(SO8), можно переделать под почти любой другой из 8-ми ногих PIC12xx. вывод на индикатор осуществляется через регистр сдвига типа 74хх164(ИР8) или СD4094(ПР1).
Пики плохи тем, что для них трудно сделать программатор. Я лично собрал две схемы и обе не заработали под XP. Потом плюнул и купил PicKit2. Работает прямо из MPLAB и прошивки постоянно обновляютя. Можно подключить к ноутбуку, так как он работает и питается от USB. Но покупка его - это дополнительные затраты.

А твой девайс (упрощенную версию с минимумом возможностей) можно сделать без пиков: взять кнопку без фиксации с тремя выводами, два элемента ЛА3 для устранения дребезга, один счетчик, с выходов которого сигналы подавать на старшие адреса ПЗУ/FLASH и на светодиоды для индикации в двоичном виде. Корпусов конечно получится больше одного...

Есть хорошие регистры 74HC595... При сдвиге на выходах сигналы не меняются. Потом дополнительным сигналом все записывается параллельно из внутреннего регистра на выходы. Но у тебя только 8 ног, а на регистр нужно три ...

Alex_NEMO
06.04.2010, 13:24
А твой девайс (упрощенную версию с минимумом возможностей) можно сделать без пиков: взять кнопку без фиксации с тремя выводами, два элемента ЛА3 для устранения дребезга, один счетчик, с выходов которого сигналы подавать на старшие адреса ПЗУ/FLASH и на светодиоды для индикации в двоичном виде. Корпусов конечно получится больше одного...
По большому счету, все это можно сделать на одной ТМ2(точнее, уже сделано и опробовано на dlcorp'е (http://dlcorp.nedopc.com/viewtopic.php?f=21&t=486&start=40#wrap)). Но, как говорится - нет предела совершенству! И простая логика не наш метод, тем паче, пяток "ХАЛЯВНЫХ" PICов завалялась... Да и состояние в EEPROM'е хранить предполагаю... опять - же минимализм в SMD, я и платку переходника прикинул! А регистр планируется вместе с семисегментником вывести. Всего-то 2 провода, + питание.

Есть хорошие регистры 74HC595... При сдвиге на выходах сигналы не меняются. Потом дополнительным сигналом все записывается параллельно из внутреннего регистра на выходы. Но у тебя только 8 ног, а на регистр нужно три ...
Про эти знаю, но у меня действительно, только 2-е ноги свободно под индикацию, а банально - два светика, вроде, не хочется...

Пики плохи тем, что для них трудно сделать программатор. Я лично собрал две схемы и обе не заработали под XP. Потом плюнул и купил PicKit2. Работает прямо из MPLAB и прошивки постоянно обновляютя. Можно подключить к ноутбуку, так как он работает и питается от USB. Но покупка его - это дополнительные затраты.
У меня то же PICkit2 + переходник SO16-DIP + универсальный программирующий модуль(ZIF-48 + гребенки в каждой стороны, + гребенки с разьемами под PICkit и Atmel AVR ISP - очень удобно!). Чего и всем желаю!

zx-kit
21.02.2011, 12:43
1. Модуль CPU
Реализуется на микропроцессоре Z80 с частотой 8-20 МГц в корпусе DIP-40 или в любом доступном корпусе.
Подтяжка всех сигналов ША, ШД и ШУ на +5В резисторами по 10 кОм.
Все сигналы выводятся на краевой разъем ZX-BUS.
Модуль CPU устанавливается в первый слот.

2. Модуль ROM.
Реализуется на одной микросхеме FLASH 128-512 Кбайт в доступном корпусе.
Подтяжка управляющих сигналов к +5В резисторами по 10 кОм.
Сигналы со слота ZX-BUS (с Z80): A0-A13, DO-D7.
Сигналы с разъема IDC-16M (с модуля управления) : старшие адреса ROM и сигналы управления.

3. Модуль RAM.
Реализуется на микросхемах SRAM по 32-512 Кбайт в доступном корпусе и схемы выбора кристалла.
Подтяжка управляющих сигналов к +5В резисторами по 10 кОм.
Сигналы со слота ZX-BUS (с Z80): A0-A13, DO-D7.
Сигналы с разъема IDC-16M (с модуля управления) : старшие адреса RAM и сигналы управления.

4. Модуль входных портов
Реализуется на микросхемах буферов типа КР1533АП6 или аналогичных в доступном корпусе.
Подтяжка управляющих сигналов к +5В резисторами по 10 кОм.
Возможность подтяжки входов буферов к +5В резисторами по 10 кОм.
Входы буферов выводятся на разъемы IDC-16M или аналогичные с другим количеством контактов.
Сигналы со слота ZX-BUS (с Z80): DO-D7.
Сигналы с разъема IDC-16M (с модуля управления) : сигналы управления.

5. Модуль выходных портов
Реализуется на микросхемах регистров типа КР1533ИР23 или аналогичных в доступном корпусе.
Подтяжка управляющих сигналов к +5В резисторами по 10 кОм.
Выходы регистров выводятся на разъемы IDC-16M или аналогичные с другим количеством контактов.
Сигналы со слота ZX-BUS (с Z80): DO-D7.
Сигналы с разъема IDC-16M (с модуля управления) : сигналы управления.

6. Модуль управления
Содержит схемы управления RAM и ROM. В идеале может настраиваться на модели памяти различных клонов c использованием свободных версий ROM от Andrew Owen, Лас, divIDE (Zilogator), PROFI INTERFACE (VELESOFT) и др.
Также обеспечивает дешифрацию основных входных и выходных портов.
Реализуется на ПЛИС/FPGA или микросхемах мелкой логики серии КР1533.
Управляющие и другие сигналы с модуля управления на другие модули подаются с помощью шлейфов через разъемы IDC-16M или аналогичные с другим количеством контактов.
Модуль управления также формирует сигнал CLK_CPU для Z80.
Устанавливается в последний слот.

7. Модуль видеоконтроллера
Перехватывает данные, которые Z80 записывает в адреса основного и дополнительного экрана оригинального ZX-SPECTRUM 128K.
Затем выводит эти данные на устройства вывода: VGA&PAL 50/60 Гц, SCART, ч/б видео.
В идеале может настраиваться на различные типы разверток: оригинального ZX-SPECTRUM 48K, Pentagon-128К, ULAplus (Andrew Owen).
Реализуется на SRAM размером 32-512 Кбайт в доступном корпусе и ПЛИС/FPGA или микросхемах мелкой логики.
Полученные сигналы на видеоустройства подаются с помощью шлейфов через разъемы IDC-16M или аналогичные с другим количеством контактов.
Модуль видеоконтроллера также формирует сигнал INT для Z80.

8 - 10. Другие контроллеры для шины ZX-BUS


ДОПОЛНИТЕЛЬНЫЕ МОДУЛИ:

KEYB&SINC
Для подключения PS/2 клавиатуры и двух SEGA джойстиков.
Обеспечивает эмуляцию механической клавиатуры и джойстиков SINCLAIR1 и SINCLAIR2.
Подключается к модулю входных портов.

KM&JOY
Для подключения PS/2 мышки и одного SEGA джойстика.
Обеспечивает эмуляцию KEMPSTON мышки и джойстика.
Подключается к модулю входных портов.
...

Black_Cat
21.02.2011, 13:24
Подтяжка всех сигналов ША, ШД и ШУ на +5В резисторами по 10 кОм.с ША и ШУ ты погорячился, ША вааще подтягивать не рекомендуется, а ШУ - не всё

zx-kit
21.02.2011, 13:29
с ША и ШУ ты погорячился, ША вааще подтягивать не рекомендуется, а ШУ - не всё

Это для надежности, чтобы во время сброса или ПДП сигналы не стали активными. Да и входам микросхем не положено висеть в воздухе, как это обычно происходит при сбросе Z80 да и во время его работы иногда.

zx-kit
24.02.2011, 04:14
Я немного пересмотрел концепцию модульного компьютера и пришел к выводу, что для его изготовления достаточно использования стандартной для России шины ZX-BUS. При этом в слотах будет только 62 контакта вместо 98 как задумывалось для ZX-BUS2.

Это позволит уменьшить площадь кросс-платы (http://www.zxkit.ru/katalog-1/zxkit-007) процентов на 30. Дополнительные сигналы будут подаваться с модуля управления не на все слоты, а только на те модули, которые их использует. Для этого удобны плоские кабели, подобные тем, что используются в PC для соединения с HDD и DVD-ROM. Все равно большинство выпущенных в России устройств для ZX-BUS имеют 62 контакта и дополнительные 36 контактов в большинстве слотов SL-98 не использовались бы.

А для возможности подключения устройств, разработанных для оригинального ZX-SPECTRUM с одной стороны кросс-платы, возле слота с максимальным номером (10, 7 или 5 для вариантов maxi, midi и mini версии соответственно) сделать краевой разъем как у оригинального ZX-SPECTRUM. При этом не будет конфликтов при дешифрации портов. У обоих версий ZX-BUS (русской и оригинальной) большинство сигналов соединяется с Z80, поэтому это будет легко реализовать.

Black_Cat
24.02.2011, 17:06
2. Модуль ROM.
Реализуется на одной микросхеме FLASH 128-512 Кбайт в доступном корпусе.
Подтяжка управляющих сигналов к +5В резисторами по 10 кОм.
Сигналы со слота ZX-BUS (с Z80): A0-A13, DO-D7.
Сигналы с разъема IDC-16M (с модуля управления) : старшие адреса ROM и сигналы управления.вааще-то на шине присутствует и A14" - *RS(A16)


3. Модуль RAM.
Реализуется на микросхемах SRAM по 32-512 Кбайт в доступном корпусе и схемы выбора кристалла.
Подтяжка управляющих сигналов к +5В резисторами по 10 кОм.
Сигналы со слота ZX-BUS (с Z80): A0-A13, DO-D7.
Сигналы с разъема IDC-16M (с модуля управления) : старшие адреса RAM и сигналы управления.На NemoBus v.1.2 так же присутствуют A14'-A18' и сигнал ENDA (B31), а на доп разъёме (типо ISA16) NemoBus v.2.0 добавлены ещё A19'-A29', запросы и реквесты DMA и прерывания.

---------- Post added at 17:00 ---------- Previous post was at 16:56 ----------


6. Модуль управления
Содержит схемы управления RAM и ROM. В идеале может настраиваться на модели памяти различных клонов c использованием свободных версий ROM от Andrew Owen, Лас, divIDE (Zilogator), PROFI INTERFACE (VELESOFT) и др.
Также обеспечивает дешифрацию основных входных и выходных портов.
Реализуется на ПЛИС/FPGA или микросхемах мелкой логики серии КР1533.
Управляющие и другие сигналы с модуля управления на другие модули подаются с помощью шлейфов через разъемы IDC-16M или аналогичные с другим количеством контактов.
Модуль управления также формирует сигнал CLK_CPU для Z80.
Устанавливается в последний слот.На NemoBus v.1.2 такая возможность есть по умолчанию.

---------- Post added at 17:03 ---------- Previous post was at 17:00 ----------


7. Модуль видеоконтроллера
Перехватывает данные, которые Z80 записывает в адреса основного и дополнительного экрана оригинального ZX-SPECTRUM 128K.в перспективных компьютерах видео ОЗУ находится по всем адресам с A16'=1

---------- Post added at 17:06 ---------- Previous post was at 17:03 ----------


Я немного пересмотрел концепцию модульного компьютера и пришел к выводу, что для его изготовления достаточно использования стандартной для России шины ZX-BUS.ну, один полный слот типо ISA16 можно было-бы и оставить под контроллер DMA и внешний менеджер памяти

Black_Cat
27.02.2011, 01:28
Информация по NemoBus v.1.2 - v.2.0: http://zx.clan.su/forum/11-82-1

zx-kit
27.02.2011, 12:50
Информация по NemoBus v.1.2 - v.2.0: http://zx.clan.su/forum/11-82-1

Хотелось бы еще инструкцию "Как сделать шину ZX-BUS в любом клоне с использованием тройника ZX-BUS TEE (http://zx.pk.ru/showthread.php?t=13950)"

Black_Cat
27.02.2011, 17:39
Как сделать шину ZX-BUS в любом клоне с использованием тройника ZX-BUS TEE:) берём интерфейс ZX BUS, подлючаем к нему ZX-BUS TEE, и получаем клон шины NemoBus, а если ещё и спецификация сигналов соблюдена, то можно даж версию присвоить :)

Alex Clap
18.04.2011, 20:58
zst, как успехи с вашим проектом?

zx-kit
18.04.2011, 22:52
zst, как успехи с вашим проектом?
Постепенно изготавливаю и приобретаю части для него:

Кросс-плата с 10 слотами ZX-BUS2 (http://zx.pk.ru/showpost.php?p=231969&postcount=274),
Опробована схема увеличения количества слотов ZX-BUS до четырех в KAY-2010 (http://zx.pk.ru/showthread.php?t=13770),
Тройник для ZX-BUS (http://zx.pk.ru/showthread.php?t=13950),
Макетная плата для ZX-BUS2 (http://zx.pk.ru/showpost.php?p=362439&postcount=634),
Программаторы для ПЛИС, ATMEGA, FLASH (на основе программатора skyther-a -- http://zx.pk.ru/showthread.php?t=12141,
Модуль ПЛИС EPM3128ATC100 для макетирования модуля управления (http://www.zxkit.ru/katalog-1/zxkit-017).
NeoGS для ZX-BUS от CHRV(http://zx.pk.ru/showthread.php?t=7903),
ZXMC2 для ZX-BUS от caro(http://zx.pk.ru/showthread.php?t=609),
NEMO_IDE для ZX-BUS (http://zx.pk.ru/showthread.php?t=13770), SMUC2 для ZX-BUS (http://zx.pk.ru/showthread.php?t=13769), NEMO_FDC для ZX-BUS (http://zx.pk.ru/showthread.php?t=13770), HxC Floppy Emulator (http://zx.pk.ru/showthread.php?t=13735) на основе плат от Alex_NEMO,
Прикинут контроллер клавиатуры и синклер джойстиков на основе схемы caro (http://zx.pk.ru/showthread.php?t=14757),
Прикинута схема видеоконтроллера VGA для ZX-BUS на основе платы VGA&PAL (http://zx.pk.ru/showthread.php?t=15504),
Планирую изготовить контроллер divIDE для ZX-BUS на основе доработок VELESOFT и макета Ewgeny7 (http://zx.pk.ru/showpost.php?p=373293&postcount=19),
Ожидаю появления свободной прошивки вместо фирменного ПЗУ от Andrew Owen (http://zx.pk.ru/showthread.php?t=15568),
...

zx-kit
24.04.2011, 08:37
Использование памяти для различных устройств.

Модуль управления будет управлять подключением в окно адресов #0000-1FFF SRAM или FLASH в зависимости от конфигурации и режима работы компьютера.

SRAM 512К и FLASH 128К можно разместить на модуле памяти.

В SRAM можно выделить 128К для основного ОЗУ. 128К для эмуляции загружаемого ПЗУ. Остальные 256К можно использовать, например, для нужд divIDE.

Во FLASH 64K выделить для основного ПЗУ, 64 К для функций divIDE.

Модуль управления может управлять всем этим, а для подключения винчестера или SD карты через адаптер SD->IDE использовать микросхемы на модуле портов ввода-вывода. Тогда в зависимости от конфигурации одни и те же порты можно будет использовать и для реализации функций NEMO_IDE, SMUC2, divIDE.

Модуль управления сможет выполнять и функцию записи значения системных портов. При этом в качестве запаса по дополнительны функциям поставить EPM3128ATC100 или EPM240T100.

zx-kit
29.10.2012, 19:26
Продолжаю деление Спектрума на модули : www.z80a.ru

Alex_NEMO
05.11.2012, 12:26
Продолжаю деление Спектрума на модули : www.z80a.ru

А сайт-то что-то не работает. Как минимум, неделю!

Дмитрий
05.11.2012, 12:55
Alex_NEMO, работает, и неделю назад (как только zst опубликовал адрес) работал.

Alex_NEMO
05.11.2012, 15:44
Alex_NEMO, работает, и неделю назад (как только zst опубликовал адрес) работал.

Странно... У меня ни дома, ни на работе... Похоже, у провов что-то с DNS'ами... А IP-адрес может кто подсказать - попробую "на прямую".

zx-kit
28.05.2013, 21:57
Годы проходят, а я так и не сделал свой модульный компьютер - времени все не хватает.
Как-нибудь закажу материнские платы с Z80, FLASH с ZIF-панелькой и SRAM 48К на борту. Может кому пригодится для изучения основ Z80. Остальные контроллеры в шину ZX-BUS, включая порт клавиатуры, видеокарту и звуковую карту надо будет брать готовые у caro, Mick и CHRV или делать базовые платы самому.

Djoni
29.05.2013, 14:49
Годы проходят, а я так и не сделал свой модульный компьютер - времени все не хватает.
Как-нибудь закажу материнские платы с Z80, FLASH с ZIF-панелькой и SRAM 48К на борту. Может кому пригодится для изучения основ Z80. Остальные контроллеры в шину ZX-BUS, включая порт клавиатуры, видеокарту и звуковую карту надо будет брать готовые у caro, Mick и CHRV или делать базовые платы самому.

Очень нравится концепция проекта много платного клона ZX spectruma,
можно помаленьку собирать и отлаживать spectrum по блокам :)

так что если будете делать кросс плату с шиной ZX-BUS тоже возьму.

Вот тоже интересный проект блочного компьютера на шине S-100
правда не спектрум совместимого.
http://www.s100computers.com/Hardware%20Folder/Digital%20Research%20Computers/Sound%20Effect/Sound%20Effect.htm
http://www.s100computers.com/Contents.htm

zx-kit
02.06.2013, 14:26
Представляю на обсуждение схему материнской платы модульного компьютера в варианте с тремя слотами ZX-BUS. На плате интегрирована RAM объемом 48К. Этого достаточно для сборки простой микропроцессорной системы на Z80A, например, компьютера типа LENINGRAD.

http://s020.radikal.ru/i707/1306/41/347b2128bad1t.jpg (http://s020.radikal.ru/i707/1306/41/347b2128bad1.png) http://s020.radikal.ru/i712/1306/7d/98be2b9c055dt.jpg (http://s020.radikal.ru/i712/1306/7d/98be2b9c055d.png)

Если в будущем микропроцессорная система будет иметь возможность загрузки с внешнего носителя и потребуется временно заменить ROM без открывания корпуса на образ в ОЗУ - предусмотрена возможность использовать свободные 16 Кбайт под теневое ПЗУ. После переключения в режим теневого ПЗУ c помощью замыкания тумлера SHADOW, соответствующа область ОЗУ защищается от записи. Если такая возможность теневого ПЗУ пока не нужна, можно не впаивать микросхемы D3, D5, а впаять перемычки перемычки J2,J3,J5,J6.

Перемычка J4 удаляется, если тактовую частоту на Z80A будем подавать с внешнего контроллера.

При установке внешней памяти RAM большего размера, интегрированную памть можно отключить с помощью установки перемычки J1. Работа теневого ПЗУ при этом остается.

Тумблер ROMSWITH, подключаемый через разъем XP3 позволяет переключать две половины по 64К из 128К FLASH-памяти, используемов вместо ПЗУ.

Djoni
02.06.2013, 16:03
А можно пять слотов ZX-BUS зделать ,три мало :(

zx-kit
02.06.2013, 16:09
А можно пять слотов ZX-BUS зделать ,три мало :(
Можно и пять. А как насчет памяти? Сейчас прогулялся до магазина и пришла мысль, что может не обязательно память применять в DIP корпусах? Тогда можно будет поставить ОЗУ объемом 128К, 256К или 1024К, чтобы можно было делать аналоги Speccy2007 128K, SCORPION-256 и KAY-2024.

ZXMAK
02.06.2013, 16:44
можно поставить димм на 256 мегабайт, плюс схему адресации, а адреса для памяти формировать платкой менеджера памяти, которую устанавливать специальный слот.
Менеджер можно сделать сразу на несколько моделей памяти.

Вопрос чем видео планируется формировать? И каковы размеры платы?

zx-kit
02.06.2013, 17:03
можно поставить димм на 256 мегабайт, плюс схему адресации, а адреса для памяти формировать платкой менеджера памяти, которую устанавливать специальный слот.
Менеджер можно сделать сразу на несколько моделей памяти.

Вопрос чем видео планируется формировать? И каковы размеры платы?

Память будеть статическая на одной-двух микросхемах. Но к памяти больше 48К нужны дополнительные дешифраторы, регистры и мультиплексоры. Память больше 128К кроме этого имеет различные варианты расширений.

Видеокарта предполагается отдельная в слот ZX-BUS. Стандартный экран с выводом на SCART.

Размеры материнской платы примерно:
На 3 слота: 100 x 110 мм.
На 5 слотов: 100 x 150 мм.
На 7 слотов: 100 x 190 мм.

На материнской плате место под основные микросхемы размером около 100 х 50 мм.
На ОЗУ со схемами управления остается места около 60 х 50 мм.

ZXMAK
02.06.2013, 17:20
во сколько обойдется готовая (спаяная и отлаженная) плата на 3 слота?
На сколько увеличится цена, если развести на плате 128к и видео?

zx-kit
02.06.2013, 17:50
во сколько обойдется готовая (спаяная и отлаженная) плата на 3 слота?
На сколько увеличится цена, если развести на плате 128к и видео?
128К может уместиться на печатной плате без увеличения площади. Память - это постоянная часть во всех клонах. А вот видео может быть реализовано в базовом варианте и с добавлением дополнительных режимов. Видео будет на отдельной плате. Например, такая видеокарта - http://www.zx.pk.ru/showthread.php?t=21398

Пока посчитаны ориентировочно цены на пустые печатные платы с учетом доставки:
3 слота = 800 руб.
5 слотов =1200 руб.
7 слотов = 1600 руб.

Djoni
02.06.2013, 18:41
Хотелось бы чтоб кросс-плате крепёжные отверстия совпадали с стандартом ATX,
ну и желательно и расстояние между слотами и нужно наверно сделать платку для отладки вставляемую в слот ZX-BUS с индикацией состоянием шины данных ,адреса,сигналов шины ZX-BUS .

ZXMAK
02.06.2013, 19:21
Хотелось бы чтоб кросс-плате крепёжные отверстия совпадали с стандартом ATX,
ну и желательно и расстояние между слотами и нужно наверно сделать платку для отладки вставляемую в слот ZX-BUS с индикацией состоянием шины данных ,адреса,сигналов шины ZX-BUS .

нужно идти дальше и делать полноценный JTAG - воткнул плату в USB и отлаживай код пошагово прямо на железе - вот это было бы здорово :)

zx-kit
02.06.2013, 19:27
Хотелось бы чтоб кросс-плате крепёжные отверстия совпадали с стандартом ATX,
ну и желательно и расстояние между слотами и нужно наверно сделать платку для отладки вставляемую в слот ZX-BUS с индикацией состоянием шины данных ,адреса,сигналов шины ZX-BUS .
Расстояние между слотами стандартное. Крепежные отверстия не совпадут, так как плата делается минимального размера. Ориентировочно подойдут корпуса GAINTA с панелями из алюминия:
G733A 260x180x105 мм (для NeoGS revision B)
G731A 260x180x85 мм
G717A 245x175x90 мм

Расстоние от задней стенки до платы подобрать таким образом, чтобы NeoGS упиралась торцом в нее. При этом и другие платы с разъемами на плате также можно будет прикрутить к задней стенке корпуса, в которой под конкретный разъем выпиливаются отверстия.

В планах плата на 4 порта ввода и 4 порта вывода для подключения различных самоделок. Ориентировочный адрес портов ввода и вывода - 11101010 (A4=A2=A0=0). Бит A10 также равен 0. Биты A15-A11 равны 1. Между собой порты будут делиться с помощью битов A9 и A8.

Например, для изучения программирования и схемотехники можно будет подключать к ним одну линейку из восьми одиночных светодиодов, два семисегментных индикатора с раздельными сигналами и один LCD индикатор. В качестве портов ввода для начала можно подключать одиночные кнопки и DIP-переключатели на 8 контактов.

После простых экспериментов со светодиодами и индикатоми можно будет переходить к выводу символов на экран телевизора/монитора.

---------- Post added at 20:27 ---------- Previous post was at 20:22 ----------


нужно идти дальше и делать полноценный JTAG - воткнул плату в USB и отлаживай код пошагово прямо на железе - вот это было бы здорово :)
Эта конструкция больше для самодельшиков. Например спаял на макетке пару регистров - воткнул в свободный слот. Потом набрал програмку в машинных кодах прямо в утилите для программировани флеш (или загрузил файл, откомпилированный из ассемблера). Файлы с PC будут переноситься через микросхему флеш-памяти. Если прошить бейсик и подключить носители типа MP3, SMUC2 и т.п. то обмен между PC и микропроцессорной системой уже будут через плеер/SD/HDD и т.д.

ZXMAK
02.06.2013, 19:33
Эта конструкция больше для самодельшиков. Например спаял на макетке пару регистров - воткнул в свободный слот. Потом набрал програмку в машинных кодах прямо в утилите для программировани флеш (или загрузил файл, откомпилированный из ассемблера). Файлы с PC будут переноситься через микросхему флеш-памяти. Если прошить бейсик и подключить носители типа MP3, SMUC2 и т.п. то обмен между PC и микропроцессорной системой уже будут через плеер/SD/HDD и т.д.

вот я и говорю - JTAG нужен - спаял на макетке пару регистров - воткнул в свободный слот. Потом открыл компилятор, набросал пару строк кода, запустил и выполняешь пошагово, прямо на железе, через JTAG. :smile:

Не надо никаких программаторов, переноса микросхем и т.п. Нужно на какой-то линии единицу установить - открыл окно отладчика, тыцнул мышкой и готово.

Djoni
02.06.2013, 19:54
Корпуса GAINTA симпатичные (http://www.chipdip.ru/product-photo/g717a/) :) ,только G260A 260x180x105 мм не нашёл.

zx-kit
02.06.2013, 19:56
вот я и говорю - JTAG нужен - спаял на макетке пару регистров - воткнул в свободный слот. Потом открыл компилятор, набросал пару строк кода, запустил и выполняешь пошагово, прямо на железе, через JTAG. :smile:

Не надо никаких программаторов, переноса микросхем и т.п. Нужно на какой-то линии единицу установить - открыл окно отладчика, тыцнул мышкой и готово.

Некоторые компиляторы могут сделать файл WAV. Пока это самый простой способ закачать программу на ZX Spectrum через линейный выход PC. Какие еще cпособы есть ? Теоретически можно придумать свой формат передачи. Но это надо писать программы. И все равно это будет только загрузка файла, а не отладка. Отладку со стандартными конфигурациями компьютеров можно делать программно на PC.

Если кто придумает более совершенный контроллер, то его можно воткнуть в первый слот. Как вариант можно установить в слот ZX-BUS контроллер дисковода NemoFDC и подключить к нему флоппиэмулятор USB. Тогда с PC можно будет загружать образ TRD/SCL.

ZXMAK
02.06.2013, 20:01
Какие еще пособы есть ? Теоретически можно придумать свой формат передачи.

зачем придумывать то что уже давно придумано и стандартизировано? Если будет JTAG, то через него можно и прошивать прошивки и настраивать железо и дебажить код, да все что угодно... Придумывать нужно как это реализовать. :v2_wink2:

Без плм тут наверное не обойтись, но оно того стоит! :)

zx-kit
02.06.2013, 20:03
Корпуса GAINTA симпатичные (http://www.chipdip.ru/product-photo/g717a/) :) ,только G260A 260x180x105 мм не нашёл.
Опечатка, должно быть G733A. Вот так выглядят с панелями из алюминия - http://www.platan.ru/img_base/nn_jpg/225707313.jpg и http://www.platan.ru/img_base/nn_jpg/143432695.jpg . Есть и с пластиковыми передней и задней панелями. Эти корпуса без буквы A на конце

Djoni
02.06.2013, 20:08
А флоппиэмулятор с USB где можно купить,как показала практика удобней наверно по USB чем с флешкой туда сюда бегать.

zx-kit
02.06.2013, 20:16
А флоппиэмулятор с USB где можно купить,как показала практика удобней наверно по USB чем с флешкой туда сюда бегать.

Планирую такой тоже выпускать - http://hxc2001.free.fr/floppy_drive_emulator/index.html#USBFloppyemulator. Но он только на чтение.

Djoni
02.06.2013, 20:53
Да, отсутствие чтения огорчает :( неверна цена должна быть пониже.

P.S.
Ка кто у нас нет технологии двустороннего обмена файлами с PC кроме как через дискеты, вся надежда на ZXNetUsb :)

zx-kit
02.06.2013, 21:03
Да, отсутствие чтения огорчает :( неверна цена должна быть пониже.

P.S.
Ка кто у нас нет технологии двустороннего обмена файлами с PC кроме как через дискеты, вся надежда на ZXNetUsb :)
Да, на CHRV и Caro. В описании на ZXMC2 написано: "минитерминал для работы с PC по RS232 с загрузчиком по протоколу X-MODEM. " - http://www.zx.pk.ru/showthread.php?t=609

Но отсутствие отладчика не должно мешать нам изучать ZX Spectrum другими доступными способами.
Да и самый простой способ обмена с PC в обе стороны тоже забывать не стоит - LOAD и SAVE через порт магнитофона на Спектруме и звуковые входы и выходы PC.

ZXMAK
02.06.2013, 21:49
Да и самый простой способ обмена с PC в обе стороны тоже забывать не стоит - LOAD и SAVE через порт магнитофона на Спектруме и звуковые входы и выходы PC.

Магнитофон это конечно хорошо, но все-же пора бы уже что-то посовременнее сделать

ZEK
02.06.2013, 23:32
Z80 JTAG не умеет

ZXMAK
03.06.2013, 04:40
Не умеет - научим :) о том и речь - сделать jtag для спектрума. На плм.

zx-kit
04.06.2013, 05:16
Прикинул реализацию памяти 1 Мбайт с помощью ПЛИС EPM3032. Оцените, пожалуйста, реальность.

Входные сигналы ПЛИС:
D7 - D0 (8)
A15,A15,A1 (3)
IORQ, IORQG, RD, WR, RESET (5)
MEMMODEL 2 - MEM MODEL0 (3)
Итого 20 входов.

Выходные сигналы ПЛИС:
RAMADR19 - RAMADR14 (6)
RAMRD, RAMWR (2)
ROMRD, ROMSEL (2)
Итого: 10 выходов.

С помощью трех джамперов MEMMODEL 2 - MEM MODEL0 планируется выбирать модель памяти компьютера: 48K, 128K, 256K, KAY-1024, PENTAGON-1024.

Достаточно ли этих сигналов и какая ориентировочная емкость ПЛИС ?

zx-kit
05.06.2013, 00:09
Очередная трансформация схемы материнской платы SLOTTIK-3, -5, -7

http://s019.radikal.ru/i616/1306/f6/30b43c800695t.jpg (http://s019.radikal.ru/i616/1306/f6/30b43c800695.png)

Дешифрация памяти по стандарту KAY-1024. Добавлен музыкальный сопроцессор.

Djoni
05.06.2013, 00:19
Та как это получается конструктор рассчитанный на широкую аудиторию.

Мне кажется нужно памяти побольше хотя бы 2048 Кб
и добавить расширение памяти по стандарту Profi и ZXM-Phoenix.
под Profi ,PENTAGON-1024 и ZXM-Phoenix есть прошивки TR-DOS с поддержкой рам-диска.
если мы включим режим для первого мегабайта память по стандарту PENTAGON-1024 ,а для второго по стандарту Profi а доступна память Profi будет только в режиме TR-DOS то можно будет бесконфликтно работать например в командере с расширенной памятью не боясь затереть рам-диск.

zx-kit
05.06.2013, 00:29
Та как это получается конструктор рассчитанный на широкую аудиторию.

Мне кажется нужно памяти побольше хотя бы 2048 Кб
и добавить расширение памяти по стандарту Profi и ZXM-Phoenix.
под Profi ,PENTAGON-1024 и ZXM-Phoenix есть прошивки TR-DOS с поддержкой рам-диска.
если мы включим режим для первого мегабайта память по стандарту PENTAGON-1024 ,а для второго по стандарту Profi а доступна память Profi будет только в режиме TR-DOS то можно будет бесконфликтно работать например в командере с расширенной памятью не боясь затереть рам-диск.

Я подумал, что музыкальный сопроцессор более стандартная и нужная вещь по сравнению с разными вариантами моделей памяти. Идея, конечно хорошая, чтобы на основе одной материнской платы можно было собирать аналоги перечисленных выше компьютеров. Феникс делался на основе Кая, поэтому адресация у него должна быть такая же. Только там 2 Мб. Для Кая есть рам-диск. У Скорпиона, вроде такая же адресация. Насчет Профи, АТМ и Пентагона не смотрел.

Можете написать сигналы, которые нужно добавить? Для реализации нескольких моделей памяти потребуется 100-ногая ПЛИС. А это усложнит пайку платы. А по текущей схеме можно даже в ПЛИС в корпусе PLCC-44 попробовать все разместить. И распространять конструктор с прошитой ПЛИС...

Djoni
05.06.2013, 00:42
Mаппера памяти для Profi
ADR1,ADR13
ПОРТ #DFFD
биты управления D0,D1,D2

zx-kit
05.06.2013, 00:44
Mаппера памяти для Profi
ADR1,ADR13
ПОРТ #DFFD
биты управления D0,D1,D2

То есть нужно добавить А13. А как у клонов Профи и АТМ экран сделать ? Эти клоны самые сложные. Нужно будет в видеоконтроллере предусматривать их режимы. Получится ли это сделать все ? С Каем проблем не должно быть - там экран стандартный, и даже контроллеры дисководов и жестких дисков уже подготовлены для модульного компьютера. Контроллер клавиатуры можно использовать ZXMC2. Феникс в принципе тоже самое, что Кай, только одноплатный вариант. Вопросы турбо пока не рассматриваются.

Djoni
05.06.2013, 00:56
Да :)

---------- Post added at 03:56 ---------- Previous post was at 03:45 ----------

Насчёт АТМ не подскажу,на Profi нужно будет делать две линейки памяти
если делать цветной экран.

zx-kit
05.06.2013, 00:58
Да :)

1 сигнал можно добавить в ПЛИС, например, реализовав BEEPER на микросхемах мелкой логики. Хорошобы найти лаконичное описание моделей памяти перечисленных выше клонов и нарисовать аналогичную схему только менеджеров RAM и RAM для статической памяти. После этого можно будет смотреть, как уместить это все в одну общую схему/ПЛИС и переключать.

Будем считать, что видеоконтроллер с нужными режимами кто-нибудь сделает в виде отдельного контроллера. Нам нужна схема основной памяти, переделанная для статических микросхем, у которых не надо выбирать строки и столбцы, как в динамической. Пока более-менее понятная схема памяти для режима 128К.

Djoni
05.06.2013, 01:10
Значения порта CMR1 DFFD
http://www.zxpress.ru/article.php?id=4477

ZXMAK
05.06.2013, 12:07
Я подумал, что музыкальный сопроцессор более стандартная и нужная вещь по сравнению с разными вариантами моделей памяти. Идея, конечно хорошая, чтобы на основе одной материнской платы можно было собирать аналоги перечисленных выше компьютеров. Феникс делался на основе Кая, поэтому адресация у него должна быть такая же. Только там 2 Мб. Для Кая есть рам-диск. У Скорпиона, вроде такая же адресация. Насчет Профи, АТМ и Пентагона не смотрел.

Можете написать сигналы, которые нужно добавить? Для реализации нескольких моделей памяти потребуется 100-ногая ПЛИС. А это усложнит пайку платы. А по текущей схеме можно даже в ПЛИС в корпусе PLCC-44 попробовать все разместить. И распространять конструктор с прошитой ПЛИС...

Если завести все сигналы процессора и памяти на плиси реализовать в плис видеоконтроллеры, тоже с переключаемые джампером, то понадобится действительно 100 ног. Зато какие возможности! На одной плате любой спектрум! :)

Еще пару юсб разьемов - один для прошивки плм, второй тоже на плм под для zxusb или jtag. :)

zx-kit
09.06.2013, 09:47
Если завести все сигналы процессора и памяти на плиси реализовать в плис видеоконтроллеры, тоже с переключаемые джампером, то понадобится действительно 100 ног. Зато какие возможности! На одной плате любой спектрум! :)

Еще пару юсб разьемов - один для прошивки плм, второй тоже на плм под для zxusb или jtag. :)

Зачем усложнять и пытаться делать все сразу на одной плате ? Тем более, это пригодится не всем. Для ваших задач больше всего подходит SPECCY2010. Там на одной плате большая FPGA, 4 Мб памяти, даже ARM с загрузкой прошивок через USB-UART. Попробуйте сначала сделать Профи и АТМ на базе него. Скорее всего, эти компьютеры также можно сделать на базе ZXEVO.

Пока предлагаю ограничить технические требования простыми компьютерами с памятью до 1 Мб, без дополнительных видеорежимов и нестандартного железа. Тем более слотовая организация и минимум блоков на материнской плате облегчают делать дополнительные варианты компьютеров. Разработайте для этого отдельный контроллер и вставьте в свободный слот.

Компьютеры с памятью до 1 Мб и стандартным экраном:

PENTAGON-1024 V1.4 (1M)
ZXM-PHOENIX V1 (1M)
SCORPION-256 (256K)
KAY-1024 (1M)
PENTAGON-128 (128К)
ZX SPECTRUM (48К)

Пока схема управления памятью подходит для последних трех типов. И это уже очень хорошо.

================================================== =============================
НОВАЯ ВИДЕОКАРТА "METEORIT-2013".

Как я уже неоднократно писал, считаю, что использование статической памяти в качестве основного ОЗУ компьютера позволяет сделать видеокарту на отдельной плате в слот ZX-BUS.

Основные функции такой платы:

Отображать на экран телевизора через стандартный разъем типа SCART графическую информацию, записываемую в ОЗУ по адресам стандартного экрана компьютера ZX SPECTRUM. При этом кадровая частота 50 Гц и формируется правильный INT на Z80 через шину ZX-BUS.
Отображать бордер.
Для компьютеров с ОЗУ больше 48К также отображать дополнительный экран.

Почему SCART, а не VGA:

Не все мониторы поддерживают частоту кадров VGA 50Гц. Еще хуже поддерживают 48 Гц.
Через SCART также можно подать и стерео звук.
Для VGA усложняется видеокарта, особенно для частоты 60 Гц - требуется дополнительный буфер в ОЗУ.
Возможно мониторы перестанут выпускать. У моих детей вместо монитора уже стоит телевизор, а что будет в будущем ? Подключается этот телевизор к компьютеру через VGA 1920x1050 точек. Конечно поддерживает режим 50 Гц через SCART. Позволяет менять пропорции экрана и подключать сразу и PC, и ZX. Тем более, для половины применений PC достаточно ноутбука - будут ли выпускать мониторы, если его функции уже выполняют ноутбук и телевизор ?

Дополнительные функции:

Режим медленной памяти для совместимости с некоторыми программами, написанными для ZX SPECTRUM. При этом формируется ПРАВИЛЬНЫЙ тактовый сигнал на Z80 через шину ZX-BUS.
Порт FE для совместимости с некоторыми программами, написанными для ZX SPECTRUM
Палитра ULAplus, аналогичная MSX2
Режим частоты кадров 48 Гц для совместимости с программами, написанными для PENTAGON-128

Опции:

Расширенные режимы для поддержки уже написанных программ
Дополнительный режим для написания новых программ

Если бы я решил спроектировать новые режимы я бы исходил из следующих соображений:

Если увеличивать количество цветов на точку до 16 (4 бита) или 256 (8 бит), то резко замедлятся программы, если использовать обычный способ вывода.
Кроме самой области экрана значительно увеличиваются по объему и графические объекты (спрайты, маски и т.п.) для вывода на экран
Если дополнительные режимы будет занимать основную память компьютера, то это усложнит написание программ и завысит требования к минимальному объему ОЗУ компьютера.
================================================== =============================
СПОСОБЫ УВЕЛИЧЕНИЯ СКОРОСТИ ДЛЯ НОВОГО РЕЖИМА ГРАФИКИ:

Память экрана и спрайтов разместить на плате видеокарты. Это позволит запускать игры для нового режима на большинстве компьютеров без связи с объемом основной памяти. Упростить способ формирования изображения на экране. Z80 при формировании изображения оперирует координатами объектов, передает эти координаты видеокарте и говорит ей, какой объект скопировать в это место экрана. Так как объемы большие, а Z80 работает медленно, то этим копированием займется сама видеократа, тем более, что спрайты уже лежат в ее памяти. В видеокарте предусмотреть механизм загрузки спрайтов из Z80 и копирование их на экран.

Ограничить количество цветов на точку до 16. Это значительное улучшение по сравнению со стандартными цветами ZX. Тем более, можно будет добавить палитру 256 цветов как в MSX2. При таком количестве цветов спрайты будут иметь приемлемые размеры.

Чтобы упростить для видеокарты формирование изображения на экране можно использовать два слоя экрана - первый и второй. На втором слое можно разместить неподвижные объекты, а на первом - подвижные. Один из 16 цветов в первом слое пожертвовать на прозрачный цвет. Это позволит подготавливать спрайты прямоугольной формы, где все, что не принадлежит отображаемому объекту залито прозрачным цветом.

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

Таким образом, мы получим механизм простого передвижения объектов. Их просто нужно перемещать по первому слою без учета контуров изображения. При этом фон не затирается, на его сохранение и восстановление не требуется тратить время. Также не требуются маски и т.п. способы вывода на экран.

Процедура размещения изображения в нужном месте экрана сводится к простому копированию из буфера спрайтов прямоугольной области заданного размера. Чтобы ускорить операцию копирования лучше применить ОЗУ с 16-ти битной шиной данных. Это позволит за один раз копировать по 4 точки из области спрайтов в область экрана.

ОЗУ с такой шиной уже опробованы в видеоконвертере VGA&PAL. В видеокарте использовать такие же. Объем памяти видеокарты при этом будет 512К. Что не так уж мало. Тем более, спрайты можно подгружать для каждого нового уровня или сцены. Увеличение объема памяти видеокарты я считаю нецелесообразным, так как две или четыре микросхемы усложнят печатную плату.

ZXMAK
09.06.2013, 15:16
Имхо все-же лучше существующие видеорежимы поддержать, а не изобретать спрайты. И почему спрайты, а не аппаратные текстуры для 3d полигонов? :)

zx-kit
09.06.2013, 16:53
Имхо все-же лучше существующие видеорежимы поддержать, а не изобретать спрайты. И почему спрайты, а не аппаратные текстуры для 3d полигонов? :)

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

Я имею ввиду, что изображение объекта, например, главного героя в игре, нарисовано заранее. Чтобы было видно движение, например, человечка, обычно рисуют несколько фаз движения. Эти изображения в ОЗУ я и называю спрайтами. При этом для основных спрайтов могут потребоваться примерно такого же размера маски для наложения объекта на фон.

Изображение двужущегося объекта на экране может состоять из следующих шагов:
1. Вычислить адрес изображения объекта на экране по координатам.
2. Вычислить адрес спрайта в буфере спрайтов по номеру объекта и номеру фазы движения.
3. Восстановить фон в предыдущем положении объекта на экране.
4. Сохранить фон в новом месте, там где его затрет объект.
5. Скопировать спрайт объекта на экран в новом месте. При этом возможны дополнительные логические операции с битами фона.

При этом еще нужно решить, что делать с атрибутами, например, как в игре THREE WEEKS IN PARADIZE.

Как видите, приходится делать несколько циклов копирования. Это требует очень многих расчетов и отнимает очень много времени. При этом на одну точку изображения приходится около 1 бита информации. А в новом режиме этой информации бует в 4 раза больше. Поэтому предыдущие способы расширения цвета не упрощают, а усложняют написание игр.

Размещение обоих слоев экрана и спрайтов (всех изображений в игре, которые может потребоваться изобразить на экране) в ОЗУ видеокарты и небольшая помощь Z80 по копированию этих изображений в нужный слой экрана значительно упростит написание игр и ускорит их работу.

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

IanPo
09.06.2013, 17:42
Или, все-таки Z80 сможет это сделать программно без торможения в игре ?
В ipvc скорость обмена с ОЗУ была 25 МБ/сек. Т.е. копирование - 12.5 МБ/сек.
У Z80 скорость копирования даже со стека минимум на порядок ниже. В демах это прокатывает, в играх наверно, не стоит. Только CPLD на это не хватит.

zx-kit
09.06.2013, 18:44
В ipvc скорость обмена с ОЗУ была 25 МБ/сек. Т.е. копирование - 12.5 МБ/сек.
У Z80 скорость копирования даже со стека минимум на порядок ниже. В демах это прокатывает, в играх наверно, не стоит. Только CPLD на это не хватит.

Я об этом и говорю, что при расширении количества цветов приходится отказаться от копирования объектов с помощью Z80. Иначе тормоза будут жуткие. Заодно предложенное мной решение освобождает основную память компьютера. При этом игры можно будет запускать даже на компьютере с 48-128К.

У вас в видеокарте больно наворочено. На нашем компьютере сделать для начала лучше только копирование. Можете попробовать сделать то, что я предложил? В качестве демы сделать фон и двигать по нему разноцветный объект с шагом 2 точки за кадр. Кстати, сколько битов в шине данных ОЗУ в вашей видеокарте ?

На мой взгляд, для реализации копирования достаточно нескольких счетчиков и регистров.
Счетчики циклов:
COUNTER_H -- счетчик циклов по-горизонтали
COUNTER_V -- счетчик циклов по-вертикали
Регистры:
X -- Координата X курсора на экране
X2 -- Копия координаты X
Y -- Координата Y курсора на экране
H -- размер спрайта по-горизонтали
V -- размер спрайта по-вертикали
ADDR1 -- адрес в ОЗУ спрайтов
ADDR2 -- адрес в ОЗУ экрана
N_SPRITE - номер спрайта в буфере спрайтов
N_FASE -- фаза движения объекта

Их загружают данными из Z80 напрямую или вычисляют в CPLD по заданным координатам.

Часть алгоритма аппаратного копирования примерно такой:
1. По номеру спрайта N_SPRITE, фазе движения N_FASE и размерам спрайта H и V рассчитать адрес начала спрайта в буфере спрайтов, записать в ADDR1.
2. Записать в счетчик COUNTER_V высоту спрайта из V.

3. Записать в счетчик COUNTER_H ширину спрайта из H.
4. Записать в Х значение копии из X2.
5. Координаты курсора X и Y преобразовать в адрес на экране в слое 1, записать в ADDR2.
6. Прочитать данные из ОЗУ по адресу ADDR1.
7. Записать данные в ОЗУ по адресу ADDR2.
8. Увеличить координату X курсора.
9. Увеличить адрес в ОЗУ спрайтов (ADDR1).
10. Уменьшить счетчик по-горизонтали COUNTER_H.
11. Если счетчик COUNTER_H не равен 0, перейти к шагу 5.

12. Уменьшить счетчик по-вертикали COUNTER_V.
13. Если счетчик COUNTER_V не равен 0, перейти к шагу 3.

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

ZXMAK
09.06.2013, 19:14
я думаю если и есть смысл делать аппаратное ускорение графики, то это должен быть отдельный высокопроизводительный процессор, желательно многоядерный. А Z80 будет только командовать - делай то, делай сё. у видеопроцессора должен быть свой канал доступа к HDD, т.к. гонять текстуры через Z80 будет накладно.
А можно к нему еще присобачить GTX460, правда врядли кто-то под такое железо софт возьмется писать :)

а вот обычный спектрум с минимумом деталей и соответственно стоимостью, поддерживающий стандартные конфигурации 48/128/512/1024/4096 и возможность подключить вг93 с AY-ком, а также видеовыводом и возможностью подключить VGA, был-бы востребован намного больше

zx-kit
09.06.2013, 19:51
я думаю если и есть смысл делать аппаратное ускорение графики, то это должен быть отдельный высокопроизводительный процессор, желательно многоядерный. А Z80 будет только командовать - делай то, делай сё. у видеопроцессора должен быть свой канал доступа к HDD, т.к. гонять текстуры через Z80 будет накладно.
А можно к нему еще присобачить GTX460, правда врядли кто-то под такое железо софт возьмется писать :)

Ну и зачем нам этот монстр ? При проектировании железа для ZX SPECTRUM надо соблюдать определенные рамки. Вы за них уже вышли. Я же предлагаю несколько счетчиков и регистров. В остальном графика остается такой же, только получается 16 цветов на точку.



а вот обычный спектрум с минимумом деталей и соответственно стоимостью, поддерживающий стандартные конфигурации 48/128/512/1024/4096 и возможность подключить вг93 с AY-ком, а также видеовыводом и возможностью подключить VGA, был-бы востребован намного больше
Вы говорите про ZXEvo.

IanPo
09.06.2013, 21:06
zst

Можете попробовать сделать то, что я предложил?
Времени хронически не хватает.

Кстати, сколько битов в шине данных ОЗУ в вашей видеокарте ?
8

John North
09.06.2013, 22:14
zst, идея отличная!
может кстати спеку щас именно это и надо. сделать нормальный новый стандарт, забыв про все старые, которые есть то каждый у процентов пяти..десяти Спектрумистов..
свежая кровь так сказать)

zx-kit
11.06.2013, 05:23
zst, идея отличная!
может кстати спеку щас именно это и надо. сделать нормальный новый стандарт, забыв про все старые, которые есть то каждый у процентов пяти..десяти Спектрумистов..
свежая кровь так сказать)
Спасибо за столь высокую оценку. Хотя идеи такой видеокарты уже давно предлагались на форуме. Я только пытаюсь их структурировать и реализовать. Давайте вместе разработаем простые и эффективные команды для работы с графикой. Тогда каждый сможет воплотить свои задумки без необходимости урезать идеи и графику из-за ограничений в цвете или скорости движения объектов по экрану.

Нужно выбрать адресацию точек на экране, если понадобится прямая запись, например для векторной графики. Предлагаю координату Y точки от 0 до 191 (8 бит) использовать в качестве младшего байта адреса. Таким образом при копировании программно или аппаратно в последовательные адреса на экране будут закрашиваться точки столбцами сверху вниз. Координату X точки от 0 до 255 (8 бит) использовать в качестве старшего байта адреса. Такая адресация позволит по координатам точки или нового места изображения спрайта на экране легко получить адрес этой точки в памяти. Также, при необходимости, это поможет увеличить размеры экрана до 256 по-вертикали и более 256 по-горизонтали. Но пока нам хватит и стандартных 192х256 точек и мы не будем тратить на это время - ведь наша первая цель увеличить количество цветов на точку, а вторая - сделать этот режим быстрым.

Выше я писал, что быстро за один раз копировать 16 бит (4 точки по 4 бита). Но это может создать неудобство при движении объекта на экране со скоростью 1 бит в кадр. Поэтому лучше на одну точку выделить целый байт (256 цветов по стандарту MSX2). И использовать ОЗУ с разрядностью 8 бит. Тогда для ускорения копирования следует применить две микрсхемы SRAM 8x512K. Одну микросхему использовать в качестве ОЗУ экрана, а другую - в качестве ОЗУ спрайтов. Обе микросхемы должны подключаться к отдельным выводам ПЛИС, что позволит при копировании спрайта на экран устанавливать на одной микросхеме ОЗУ адрес источника, а на другой - адрес приемника данных. Это позволит переписывать через данные из одной в другую (из ОЗУ спрайтов в ОЗУ экрана) за один раз без промежуточного хранения в ПЛИС.

Отдельная память 512К для экрана позволит хранить сразу два экрана по 2 слоя, по аналогии с вторым экраном в моделях 128К. Это позволит изображать уже полностью сформированный экран одним переключением экранов.

Требуется продумать простой и эффективный способ загрузки спрайтов в ОЗУ видеокарты, объем которой 1 Мб. Для записи пикселов прямо в ОЗУ экрана лучше отправлять в видеокарту ЦВЕТ ТОЧКИ, координаты X и Y. А для записи в ОЗУ спрайтов лучше передать начальный адрес спрайта, а потом просто данные непрерывным потоком, с автоинкрементом адреса в самой видеокарте.

Один из вариантов обращения к видеокарте - через адреса стандартного экрана ZX SPECTRUM.

zx-kit
11.06.2013, 15:11
Изображение срайтов на экране.

Как известно, для рисования объектов фона в игре обычно используют спрайты. Это позволяет нарисовать маленький участок стены, травы, дороги и других элементов игрового пространства в виде маленького квадратика, а затем размножить этот квадратик по всему экрану. Таким способом уменьшается размер памяти, занимаемой игрой. Ниже приведен пример черно-белого спрайта размером 16х16 точек, копируя который можно нарисовать кирпичную стену.

Хорошо, стену нарисовали, но как нам изобразить движение автомобиля, который едет вправо вдоль этой стены ? Очень просто - автомобиль изображать на одном месте, а двигать влево стену. Но это не очень простая и быстрая операция для обычной графики ZX SPECTRUM.

Один из способов - программный сдвиг каждого байта спрайта на один пиксел влево и другие дополнительные операции. Второй способ - заготовить заранее 16 спрайтов со сдвигом на разное количество точек. Оба способа имеют недостатки - большие затраты времени или памяти компьютера. А еще нужно наложить сверху изображение, в нашем случае, автомобиля.

В новой видеокарте METEORIT-2013 можно сделать проще и быстрее. Это лучше объяснить на увеличенном изображении спрайта. Там каждому столбцу и строке спрайта присвоен номер от 0 до 15. Если нам, например, нужно изобразить стену со сдвигом на 1 пиксел влево нужно указать видеокарте, что самый левый спрайт копируется на экран не весь, а со столбца 1 до 15. Следующие справа спрайты до предпоследнего копировать полностью, с 0 до 15 столбцов. А последний - с 0 до 0, то есть узкую вертикальную полоску толщиной 1 точку. Аналогично нужно копировать спрайты и с другими отступами на 2-15 точек. Номера столбцов, которые нужно скопировать на экран задаются переменными X1 и X2 (см. рисунок). Таким образом можно двигать и неповторяющиеся элементы экрана. Просто учитывать, что с краев экрана нужно изображать определенную часть спрайта.

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

При сдвиге фона на втором слое экрана также не нужно заботиться о наложении изображения движущегося объекта на первом слое. В данном примере машину просто изображаем на переднем слое один раз, а за ней будем двигать фон - кирпичную стену. Если же нам вместо машины нужно изобразить идущего пешком героя, мы заранее рисуем несколько спрайтов, изображающих разные фазы его движения. Используем любые из 255 цветов, а пустое место в спрайте вокруг героя закрашиваем 256-ым прозрачным цветом (цветом с определенным кодом). Таким образом, мы просто говорим видеокарте, что нам нужно скопировать в нужное место определенный спрайт (фазу движения героя). Она все быстро копирует. Получается изображение как в мультфильме.

Как видите, с новой видеокартой все очень просто и быстро. Даже при 255 цветов на точку!

alone
11.06.2013, 16:59
В какой мере это будет совместимо с MSX, V6Z80P, TS Labs-спрайты №1, TS Labs-спрайты №2, Eva V9990? Если несовместимо, то зачем нужен ещё один вариант?

John North
11.06.2013, 17:02
alone, zx.pk.ru/showpost.php?p=608495&postcount=338

zx-kit
11.06.2013, 21:27
В какой мере это будет совместимо с MSX, V6Z80P, TS Labs-спрайты №1, TS Labs-спрайты №2, Eva V9990? Если несовместимо, то зачем нужен ещё один вариант?

Предлагаю использовать те же 256 цветов, что и в MSX2. Упрощают ли перечисленные режимы написание программ ? Здесь все нужно согласовать с программистами для упрощения и максимального возможного ускорения работы графики. Иначе все эти расширения будут бесполезны и годиться только для показа картинок.

alone
11.06.2013, 21:39
Evo SDK - куда проще? Только координаты спрайтов подставляешь, она сама рисует.

zx-kit
11.06.2013, 22:27
Evo SDK - куда проще? Только координаты спрайтов подставляешь, она сама рисует.

А экран быстро сдвигает ? Кстати я предлагаю более простой вариант без SDK.
Лучше бы по делу что-нибудь предложил, например, как быстрее загружать спрайты в видеокарту и какие еще дополнительные возможности нужны для ускорения работы игр. ...

Может потом начнем перекрашивать и ускорять старые интересные игры. Для начала можно спрайты оставлять двухцветные. При загрузке в видеокарту преобразовывать в восьмибитный цвет. Потом корректировать поцедуры изображения главного героя игры, чтобы устранить конфликт атрибутов. Например, можно улучшить графику в той же игре THREE WEEKS IN PARADIZE. Объекты будут двигаться по 1 слою экрана, не меняя цвет свой или фона.

Это, кстати, наводит на мысль, что для устранения конфликта атрибутов в некоторых играх достаточно было бы просто добавить 1 слой к стандартному экрану ZX SPECTRUM...

alone
12.06.2013, 19:43
Кто будет это делать? Это не легче, чем портирование тех же игр под цвет на точку на АТМ.

Evo SDK не занимается сдвигом экрана.

zx-kit
13.06.2013, 19:30
Кто будет это делать? Это не легче, чем портирование тех же игр под цвет на точку на АТМ.

Evo SDK не занимается сдвигом экрана.

А это не вы тот легендарный ALONE CODER, который придумал режим 16 цветов на точку для PENTAGON-1024 V2.2 и в одиночку написал несколько игр для ATM и ZXEVO ?

Было бы очень хорошо, если бы вы посоветовали, как улучшить существующие режимы для этих компьютеров. Недавно читал, что 64 цвета на точку недостаточно для портирования игр, в которых изображены люди - они получаются с почти белой кожей. А 256 цветов как в MSX2 (http://en.wikipedia.org/wiki/List_of_8-bit_computer_hardware_palettes#MSX2) подошли бы для изображния человека и других объектов с намеком на объемность ?

Я около года назад пробовал нарисовать спрайты для игры (http://www.zx.pk.ru/showpost.php?p=350910&postcount=84 ). Сразу же возникло неудобство из-за ограничений цвета даже таких простых объектов как танки и машинки.

А если захотеть сдвигать игровое поле при движении танка на дальние расстояния возникнет другая проблема - большие вычислительные работы и медленный скроллинг. Да и клэшинг атрибутов вносит дополнительные трудности. Такие вопросы возникают, наверно, не только у меня. Все-таки, интегрированная видеокарта на ZX Spectum, как и на PC больше подходит для простых офисных задач, работы и простых игр. А для игр с богатой графикой и динамикой нужна внешняя видеокарта, над чем я сейчас и работаю. Конечно имеется ввиду не 3D, а графика как в оригинальном ZX Spectrum, только быстрая и более цветастая. Далеко от оригинала уходить не надо. Мы же не собирается делать подобие PC. Кстати у некоторых игровых компьютеров того времени были внешние видеокарты/видеоконтроллеры.

Как я понял, для реализации идей игр требуется движок, позволяющий быстро изображать объекты на экране. И цвета не должны тормозить игру или занимать основную память. Поэтому движок для игры должен быть поддержан на аппаратном уровне копирования элементов изображений. А 48К хватит для алгоритма игры и AY-эффектов. Или, если памяти много (1024 К) - всю свободную потратить на звук, а не графику.

Железа для ZX Spectrum за несколько лет становится все больше и больше. Mick сделал звуковую карту и сам портирует музыку с другого комьпьютера с этим звуковым чипом. CHRV сделал сетевую карту. Под нее сейчас также пишется программное обеспечение. А я займусь видеокартой. Все равно для моего модульного компьютера нужна какая-то видеокарта. Сначала она будет работать как обычная интегрированная в ZX Spectrum, но наличие ПЛИС позволит в дальнейшем добавлять новые функции. Их можно будет делать постепенно с учетом максимального удобства и быстродействия при написании игр.

Для развития процесса написания игр, наверно надо будет предоставить бесплатные образцы видеокарты разработчикам игр, как это делает NEDOPC.

Valen
13.06.2013, 21:26
А для игр с богатой графикой и динамикой нужна внешняя видеокарта, над чем я сейчас и работаю.


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



Как я понял, для реализации идей игр требуется движок, позволяющий быстро изображать объекты на экране.

Да.
В таком случае, 3,5МГц спектрума вполне хватит на логику игры, просчет объектов и набивку регистров видео-карты.
Шина ZX BUS - это гарантия того, что любой желающий сможет вставить/впаять видео-карту в свой самый любимый спектрум.
Доступная цена - это тоже будет плюс.




И цвета не должны тормозить игру или занимать основную память.

Конечно, вся графика будет лежать в памяти видео-карты. Программа, на спектруме, будет только устанавливать регистры спрайтов, чтобы отобразить графику на экране.
Это сразу даст возможность делать one frame игры (как на Денди или сега Мегадрайве)



Поэтому движок для игры должен быть поддержан на аппаратном уровне копирования элементов изображений.

Если вы уж замахнулись на спрайты. То, можно конечно и спрайты.
Тогда, как вы правильно заметили, нужно две СРАМы.
(И у каждой СРАМ, своя шина к ПЛИС.)
Одна именно под графику спрайтов, другая под графику тайлов (если конечно у вас будут тайлы).




А 48К хватит для алгоритма игры и AY-эффектов.

Да, для не особо большой игры, хватит и 48КБ.
Там же по сути только код/данные, ну там музыка.
Вся графика в видео-карте сидит.



Или, если памяти много (1024 К) - всю свободную потратить на звук, а не графику.

Так и есть.


Касательно режимов видео-карты.
Согласен,
режим спековского разрешения 256x192, можно оставить для возможной расцветки старых игр.
Ну и конечно, сделать там обычный 320x200 (или 320x240), под него и будет весь новый софт будет работать.

Ну и по частотам прикидки такие:
Мастер клок - 14МГц.
Пиксел клок - 7МГц.

zx-kit
13.06.2013, 23:18
Если вы уж замахнулись на спрайты. То, можно конечно и спрайты.
Тогда, как вы правильно заметили, нужно две СРАМы.
(И у каждой СРАМ, своя шина к ПЛИС.)
Одна именно под графику спрайтов, другая под графику тайлов (если конечно у вас будут тайлы).

Первая SRAM - под экран (2 слоя/плана). Из нее изображение показывается на телевизоре.
Во второй SRAM - все заранее нарисованные спрайты к игре.
Пока ничего лишнего.


Касательно режимов видео-карты.
Согласен,
режим спековского разрешения 256x192, можно оставить для возможной расцветки старых игр.
Ну и конечно, сделать там обычный 320x200 (или 320x240), под него и будет весь новый софт будет работать.

Ну эти режимы можно будет добавить потом. Однако координата 320 будет занимать 2 байта. Значит под координату X надо сразу 2 байта выделить. А для оригинального разрешения записывать только младший байт. В старший записать 0.


Ну и по частотам прикидки такие:
Мастер клок - 14МГц.
Пиксел клок - 7МГц.
Так и планируется - все как в оригинале.

А какие у вас соображения по интерфейсу между Z80 и видеокартой? У меня пока такие прикидки. Использовать адреса стандартного экрана с #4000. Записывать все параметры как в память:

4000 - координата Y спрайта (строка экрана)
4001 - младший байт координаты X спрайта (столбец экрана)
4002 - старший байт координаты X спрайта (столбец экрана)
4003 - начальная копируемая строка спрайта (обычно 0)
4004 - конечная копируемая строка спрайта (обычно 15)
...
начальный копируемый столбец спрайта (обычно 0)
конечный копируемый столбец спрайта (обычно 15)
размер спрайта по-вертикали (обычно 16)
размер спрайта по-горизонтали (обычно 16)

номер экрана, куда копировать спрайт
номер слоя, куда копировать спрайт
младший байт номера спрайта
старший байт номера спрайта

адрес команды "КОПИРОВАТЬ СПРАЙТ"

номер экрана для отображения на TV


1 байт адреса для загрузки спрайтов (младший)
2 байт адреса для загрузки спрайтов
3 байт адреса для загрузки спрайтов (старший)
данные спрайта (после записи происходит автоинкремент адреса)

координата Y курсора (строка экрана)
младший байт координаты X курсора (столбец экрана)
старший байт координаты X курсора(столбец экрана)
цвет точки при рисовании на экране по точкам
адрес команды "НАРИСОВАТЬ ТОЧКУ"
...

Возможно удобнее для программирования вместо номера спрайта указывать его трехбайтовый адрес в ОЗУ спрайтов. Если спрайт будет размером 16х16 точек, то он будет занимать 256 байтов и самый младший байт адреса можно оставлять нулевым, самый старший будет номером группы спрайтов, а средний - номером спрайта в группе.

Valen
13.06.2013, 23:50
адрес команды "КОПИРОВАТЬ СПРАЙТ"

Что-то мне, не совсем ясна фраза "команда копировать спрайт" ?
Вы что, хотите чтобы по этой команде,
произошло аппаратное копирование спрайта из спрайт-памяти в видео-память ?
(из СРАМ в другую СРАМ)

zx-kit
14.06.2013, 00:36
Что-то мне, не совсем ясна фраза "команда копировать спрайт" ?
Вы что, хотите чтобы по этой команде,
произошло аппаратное копирование спрайта из спрайт-памяти в видео-память ?
(из СРАМ в другую СРАМ)

Ну да. При записи любого числа в эту ячейку. Предварительно все параметры копирования должны быть записаны в соответствующие ячейки.

Alex Rider
14.06.2013, 01:17
Кто будет это делать? Это не легче, чем портирование тех же игр под цвет на точку на АТМ.
Это в разы легче, чем портировать игру под АТМ'овский режим. Для портирования под 16c и АТМ надо перетряхивать структуру программы чтобы освободить разбухшую экранную память. Распихивать какой-то код по страницам, следя за схемой их включения. Следить, чтобы страницы с графикой (также разбухшей), продедурами ее отрисовки и с экранной памятью были впечатаны одновременно во время вывода. При этом не забывать про стек и прерывания. Если исрользовать менеджер памяти ATM, на других машинах это работать не будет. Кроме того, прикинуть в уме что получится с времянками программы после перехода на цвет-на-точку не получится, надо пробовать. В общем, не самый легкй вариант. Мне пределка под ATM/16c видится как полная декомпиляция, изучение всей логики и правка громадного объема кода.
Переделка под предложенный zst выглядит значительно проще. Надо в заргузчике отправить новую графику в ОЗУ видеокарты, запатчить процедуры вывода оригинальной графики (при необходимости распихать невлезшее по освободимшимся от старой графики кускам памяти), посмотреть что стало с времянками игры и поправить при необходимости. Это видится в разы более простым. Кроме того, предлагаемая карточка (и адаптированная программа) будет работать на любом клоне с ZX-BUS.

Valen
14.06.2013, 01:24
Ну да. При записи любого числа в эту ячейку. Предварительно все параметры копирования должны быть записаны в соответствующие ячейки.

Ага, ясно.
Но, этот метод вывода спрайтов не тот, о котором говорил я.


Я имел в виду, классический метод отображения спрайтов.
(его и советую использовать)
Метод с буфером строки.
Т.е. есть спрайт-память. (одна СРАМ)
В ПЛИС располагаются два буфера, для двух строк изображения.
(теневой буфер и активный буфер).
Для каждой строки изображения:

Показываем активный буфер (выводим строку изображения),
и одновременно строим строку спрайтов в теневой буфер, для следующей строки изображения.
Затем меняем буфера местами (активный <--> теневой).

Естественно, при таком способе, ПЛИС только читает из спрайт-памяти.
(записывает же во внутренние быстрые буфера строки)

p.s. zst, создайте плиз новую ветку по видео-карте

TSL
14.06.2013, 03:42
Ага, ясно.
Я имел в виду, классический метод отображения спрайтов.
(его и советую использовать)
Метод с буфером строки.

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


В какой мере это будет совместимо с MSX, V6Z80P, TS Labs-спрайты №1, TS Labs-спрайты №2, Eva V9990? Если несовместимо, то зачем нужен ещё один вариант?
Эволюция, мон-шер. А чо вы так беспокоитесь? Что АТМ не выдержит эволюционной борьбы и улетит на свалку истории? Ну, тащемта, правильно боитесь.


Evo SDK - куда проще? Только координаты спрайтов подставляешь, она сама рисует.
Портируй на свой (и Shiru) СДК тот же UWOL Quest for money (http://tslabs.info/forum/viewtopic.php?f=11&t=168) (от Shiru же). Хотя там как раз и есть 10 спрайтов, может АТМ на 14МГц и потянет.

alone
14.06.2013, 12:18
Было бы очень хорошо, если бы вы посоветовали, как улучшить существующие режимы для этих компьютеров. Недавно читал, что 64 цвета на точку недостаточно для портирования игр, в которых изображены люди - они получаются с почти белой кожей. А 256 цветов как в MSX2 (http://en.wikipedia.org/wiki/List_of..._palettes#MSX2) подошли бы для изображния человека и других объектов с намеком на объемность ?

Я около года назад пробовал нарисовать спрайты для игры (http://www.zx.pk.ru/showpost.php?p=350910&postcount=84 ). Сразу же возникло неудобство из-за ограничений цвета даже таких простых объектов как танки и машинки.
Можно использовать два неиспользуемых бита палитры ATM. Но. Овчинка в виде незначительного изменения цветов не стоит выделки в виде доработки 700 компов (400 из них надо перепрошить, 300 перепаять) и 3 эмуляторов. В случае танков - см. как нарисовано Battle City на NES. Как решать проблемы с кожей - я уже показал здесь: http://zx-pk.ru/showthread.php?t=19681 (причём обе картинки в одной палитре)


Или, если памяти много (1024 К) - всю свободную потратить на звук, а не графику.

На NeoGS своя память под звук, и её 4 мегабайта.


Для развития процесса написания игр, наверно надо будет предоставить бесплатные образцы видеокарты разработчикам игр, как это делает NEDOPC.
Разработчикам игр для начала надо обеспечить совместимость с тем, что они уже написали. Иначе они пальцем не пошевелят. Какой смысл писать, если это потом выбросят на помойку?

---------- Post added at 10:59 ---------- Previous post was at 10:54 ----------


А какие у вас соображения по интерфейсу между Z80 и видеокартой? У меня пока такие прикидки. Использовать адреса стандартного экрана с #4000. Записывать все параметры как в память:
Самый лучший интерфейс был в V9990 - через порты, в GFX9000 и в реализации Ronin'а с короткими адресами. Это экономит регистровую пару по сравнению с работой в ОЗУ при том же количестве команд. И все нужные операции там есть - точка, линия, внутренний цикл заливки, тайлы, спрайты, блиттер. Если сделаешь полностью совместимую эмуляцию хотя бы режима P1, то сможешь портировать софт с MSX GFX9000.

---------- Post added at 11:02 ---------- Previous post was at 10:59 ----------


Это в разы легче, чем портировать игру под АТМ'овский режим. Для портирования под 16c и АТМ надо перетряхивать структуру программы чтобы освободить разбухшую экранную память.
Ты ошибаешься. Никакие процедуры перемещать не придётся, потому что экран можно впечатывать в #0000. Нужно только изменить номера используемых страниц.

---------- Post added at 11:02 ---------- Previous post was at 11:02 ----------


Если исрользовать менеджер памяти ATM, на других машинах это работать не будет.
На других машинах эти игры уже работают, в 6912.

---------- Post added at 11:10 ---------- Previous post was at 11:02 ----------


Кроме того, предлагаемая карточка (и адаптированная программа) будет работать на любом клоне с ZX-BUS.
Подмена ПЗУ через порт #3ff7 тоже будет работать на любом клоне с ZX-BUS.

---------- Post added at 11:18 ---------- Previous post was at 11:10 ----------


Эволюция, мон-шер. А чо вы так беспокоитесь? Что АТМ не выдержит эволюционной борьбы и улетит на свалку истории?
Борьбы, извините, с чем? С радиолюбительскими поделками?

goodboy
14.06.2013, 12:31
Борьбы, извините, с чем? С радиолюбительскими поделками? поаккуратней в выражениях, версию ленинграда от ZST
я собрал после почти 20ти летнего перерыва от паяльника, и всё сразу запустилось и заработало.

alone
14.06.2013, 12:40
Ленинград - это продукт, сделанный по технологии и с учётом рынка. Потому он не нуждался в настройке и пользовался спросом. А спрайты от тслабса - это поделка "для себя", которая вообще не работает на некоторых экземплярах плат, потому что автор плевал на времянки. Таким же образом автор плевал на совместимость.

goodboy
14.06.2013, 13:03
спрайты от тслабса - это поделка "для себя", которая вообще не работает на некоторых экземплярах плат, потому что автор плевал на времянки. Таким же образом автор плевал на совместимость.

а причём тут продукты от zst ???

alone
14.06.2013, 13:05
А при чём тут продукты от zst? Я отвечал тслабсу.

Alex Rider
14.06.2013, 15:19
Разработчикам игр для начала надо обеспечить совместимость с тем, что они уже написали.
Разработчикам надо сделать так, чтобы поддержка нового режима не требовала, во-первых, перетряхивания всего написанного кода, а, во-вторых, не вызывала увеличение времени вывода графики.


Ты ошибаешься. Никакие процедуры перемещать не придётся, потому что экран можно впечатывать в #0000. Нужно только изменить номера используемых страниц.

Страницы с разбухшей графикой тоже надо включать, выключая какие-то страницы с кодом игры. Если код вывода графики есть в разных окнах адресного пространства, надо все равно перепахивать или писать хитрый менеджер памяти. Опять же, не забываем про стек, ISR, таблицу прерываний и IM1. Ясно, что, если адаптировать Saboteur, думаю, получится посильно для одного человека за разумное время. С Elite все уже сложнее в разы.


На других машинах эти игры уже работают, в 6912.
Ага, но при утсановке карточки от zst они будут работать и в его режиме. Целиком ZX-Evolution для этого покупать не надо. А, если сделать такой режим в Эве, то и ее владельцам не надо будет покупать карточку от zst.


Подмена ПЗУ через порт #3ff7 тоже будет работать на любом клоне с ZX-BUS.
Вот это не понял к чему. Причем тут адаптация под видеорежимы, которых у клона на плате нет?

TSL
14.06.2013, 16:49
А спрайты от тслабса - это поделка "для себя", которая вообще не работает на некоторых экземплярах плат, потому что автор плевал на времянки.
Не работает НА ОДНОМ экземпляре - на ЛВД. И то лишь по причине того что лвд запаял заведомо слоупочные драмы с неведомой целью. Допускаю, что не будет работать и у тебя - твою кривописанную плату тоже паял лвд. Сфоткай в хорошем разрешении и выложи, если не стыдно.
На всех остальных экзах, кто использует, работает.
Алсо, у недописи в бейзе не работает ИДЕ-интерфейс. "Лечат" они это опцией slew-rate, которая дает глюки в зависимости от компиляции. В тсконфе эта проблема пофиксана раз и навсегда.

Таким же образом автор плевал на совместимость.
АТМ несовместима с пентагоном (312 строк).
Бейзконфа несовместима с АТМ (порт палитры и лвдтекстмоды).
Продолжать?

---------- Post added at 15:49 ---------- Previous post was at 15:48 ----------


Борьбы, извините, с чем? С радиолюбительскими поделками?
Пентева - радиолюбительская поделка, кто ж спорит?

alone
14.06.2013, 17:04
АТМ несовместима с пентагоном (312 строк).
В документации на ATM Turbo 2+ число строк не оговаривается.


Бейзконфа несовместима с АТМ (порт палитры и лвдтекстмоды).
В документации на ATM Turbo 2+ адреса портов чётко указаны и значения в них тоже. Поэтому кривопортосратели идут лесом.
Лвдтекстмод не пересекается с документированными режимами и не конфликтует ни с каким софтом.

Пентева разработана строго по даташитам, производится серийно и не требует настройки. Мнения радиолюбителей о якобы радиолюбительском характере этого профессионального продукта никого не волнуют.

---------- Post added at 16:04 ---------- Previous post was at 16:02 ----------


Алсо, у недописи в бейзе не работает ИДЕ-интерфейс.
Ври дальше.

TSL
14.06.2013, 17:08
АТМ головного мозга.
Поциенту поможет только живительная клизма кипятком...

alone
14.06.2013, 17:12
Причем тут адаптация под видеорежимы, которых у клона на плате нет?
Дополнительные видеорежимы реализуются во внешней видеокарте.


Разработчикам надо сделать так, чтобы поддержка нового режима не требовала, во-первых, перетряхивания всего написанного кода, а, во-вторых, не вызывала увеличение времени вывода графики.

Если реализовать на внешней видеокарте ATM экраны и палитру, то будут сразу работать Little Viewer, ANSI viewer, ALASM, Pang 16C, Ball Quest, Season of Sakura, Книга мёртвых: Потерянные души и Three Sisters' Story. Можно также пропатчить Personal Nightmare под скорпионовскую память. Переделка The Board уже потребует наличия порта #3ff7 (переключение страниц ОЗУ в #0000..#3fff). Да и новый софт куда удобнее писать с двумя окнами - в #0000 и #c000 (в одном включаем экран, в другом графику).


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

Alex Rider
14.06.2013, 18:09
Дополнительные видеорежимы реализуются во внешней видеокарте.
zst предлагает для общения с видеокартой использовать экранную область 6912, так что отключать ПЗУ смысла нет.

Если реализовать на внешней видеокарте ATM экраны и палитру,
Как дополнение к предложенному автором режиму. Потому что предлагаемый им вариант удобнее как для разработки нового софта, так и для модификации существующего.

Да и новый софт куда удобнее писать с двумя окнами - в #0000 и #c000 (в одном включаем экран, в другом графику).
Мы говорили про адаптацию. Новый софт изначально можно писать, закладываясь на наличие менеджера памяти и нужных видеорежимов.

Страницы с графикой просто добавятся. На самом старом скорпионе и то есть целых 256К.
Странцы с графикой должны быть впечатаны в адресное пространство в момент отрисовки графики. Вместе с ними должны быть впечатаны страницы со стеком, таблицей IM2, ISR и глобальными переменными, нужными графическим процедурам. Не во всех существующих играх малой кровью можно выключить даже окно #4000 - #7fff, уж не говоря про остальные окна RAM. Вариант режима zst предполагает, что графику можно разместить в памяти видеокарты до загрузки и запуска основного кода, что не потребует щелканья страниц в незаточенной под это программе.

Valen
14.06.2013, 19:19
А какие у вас соображения по интерфейсу между Z80 и видеокартой? У меня пока такие прикидки. Использовать адреса стандартного экрана с #4000. Записывать все параметры как в память

Да,
вполне нормально регистры видео-карты, отобразить на память.

Как пример:
программа держит в спековской памяти буфер регистров для всех спрайтов.
C начала фрейма, программа заполняет этот буфер данными (X, Y, номер спрайта)
для спрайтов, которые нужно отобразить в следующем фрейме.
В конце фрейма, перед началом обратного хода луча,
этот буфер по ldir копируется в видео-карту.

zx-kit
14.06.2013, 21:50
Конечно, вся графика будет лежать в памяти видео-карты. Программа, на спектруме, будет только устанавливать регистры спрайтов, чтобы отобразить графику на экране.
Это сразу даст возможность делать one frame игры (как на Денди или сега Мегадрайве)

Если вы уж замахнулись на спрайты. То, можно конечно и спрайты.
Тогда, как вы правильно заметили, нужно две СРАМы.
(И у каждой СРАМ, своя шина к ПЛИС.)
Одна именно под графику спрайтов, другая под графику тайлов (если конечно у вас будут тайлы).


Давайте уточним понятия. Тайлами называют квадратные изображение из которых, как из мозаики строится игровое пространство. Тайловая графика -- (http://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F_% D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0)

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

Для предлагаемой видеокарты особой разницы между спрайтами и тайлами нет. Она их считает просто изображениями - набором из точек. И копирует их одинаковым способом из одной микросхемы SRAM в другую. Оба вида изображений заранее нарисованы и лежат во второй SRAM (памяти спрайтов и тайлов). Первая SRAM содержит два слоя экрана - 1 слой (передний план), на котором располагают спрайты, и 2 слой (задний план), на котором располагают изображение фона из тайлов, полученное копированием тайлов из второй SRAM. Чтобы изобразить фон (игровое поле) копируем несколько типов тайлов в нужные места 2 слоя, составляем его как из плиток. 2 слой весь заполнен соответсвующими тайлами.

Большая часть переднего плана закрашена прозрачным цветом с помощью специального спрайта. А туда, где нужно изобразить подвижные или неподвижные объекты, например, главного героя и его врагов, копируют спрайты этих объектов.

При выводе изображения на TV видеокарта читает из 1 SRAM сначала точку из 1 слоя, а потом из 2 слоя. Потом решает, какую же из них показать. Если в 1 слое цвет точки прозрачный, то показывает на TV точку из 2 слоя, а если нет - из первого.

Эта основная задача видеокарты. На это ей выделяются соответствующие кванты времени. А остальное время видеокарта выполняет задания Z80 по копированию спрайтов и тайлов на 1 и 2 слой. Как видите, большого буфера при выводе на TV не нужно - только на 2 точки.

Спрайты и тайлы могут располаться в памяти видеокарты в произвольных местах 2 SRAM. Для того чтобы указать, что это - спрайт или тайл, то есть, куда его копировать - на 1 слой или второй, можно выделить два адреса в области параметров. При записи номера спрайта/тайла в первый адрес этот спрайт/тайл будет копироваться в первый слой, при записи во второй адрес - копироваться во второй слой.

Для больших возможностей, которые нельзя или сложно изобразить с помощью спрайтов/тайлов, можно предоставить микропроцессору Z80 возможность рисовать линии по точкам в указанных координатах экрана на 1 или 2 слое (http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Warcraft_2_screenshot.png ). Для этого также выделить два адреса, куда записывать код цвета точки для соответствующего слоя.

Alex Rider
14.06.2013, 22:39
Готов поддержать "zst", для его проекта по созданию видеокарты, деньгами.
+1

Valen
14.06.2013, 22:52
Давайте уточним понятия.

Я прочитал ваше сообщение, ещё раз почитал то, что вы описывали.
Думаю ваша архитектура - это архитектура блитера (аппаратного копировщика),
будет вполне работоспособна.
(хотя и совсем не похожа на классические спрайты/тайлы)


В каком формате, в видео-карте, будут храниться 16-ти цветные спрайты ?
Вполне пригодный - 2 точки на байт.
(старшие 4 бита - цвет первой точки, младшие 4 бита - цвет второй точки)

zx-kit
14.06.2013, 23:32
Наконец то "лед тронулся". Готов поддержать "zst", для его проекта по созданию видеокарты, деньгами. На первых порах не больше 2.000 рублей. Могу отправить в любое время.

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

---------- Post added at 00:32 ---------- Previous post was at 00:27 ----------

[QUOTE=Valen;609416]Я прочитал ваше сообщение, ещё раз почитал то, что вы описывали.
Думаю ваша архитектура - это архитектура блитера (аппаратного копировщика),
будет вполне работоспособна.
(хотя и совсем не похожа на классические спрайты/тайлы)

Да, моя идея - это скорее блиттер. BLIT (англ. BLock Image Transfer) -- http://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%B8%D1%82%D1%82%D0%B5%D1%80



В каком формате, в видео-карте, будут храниться 16-ти цветные спрайты ?
Вполне пригодный - 2 точки на байт.
(старшие 4 бита - цвет первой точки, младшие 4 бита - цвет второй точки)

Можно сразу 256 - 8 бит на точку. Тогда упрощается сдвиг (изображение в новом месте экрана) спрайта/тайла на 1 точку. При этом цвета без палитры. Также это позволит рисовать по точкам сразу на экране. Если в байте две точки - то это создаст проблему.

Valen
15.06.2013, 00:41
Можно сразу 256 - 8 бит на точку. Тогда упрощается сдвиг (изображение в новом месте экрана) спрайта/тайла на 1 точку.
Согласен,
байт на точку нормально.



При этом цвета без палитры.
Есть какие-то сложности, чтобы сделать палитру ?

baxter
15.06.2013, 00:44
Есть какие-то сложности, чтобы сделать палитру ?
256 колоров мало?

Alex Rider
15.06.2013, 00:54
Согласен,
байт на точку нормально.

Спрайт 16x16, будет иметь размер в 1 сектор, однако. Сколько времени понадобится чтобы прокачать в память видеокарты графику для игры в духе Saboteur 2 или Trantor? А если еще и GS-музыку... Зато красиво будет :)

baxter
15.06.2013, 01:00
Alex Rider, винты и флешки давно поддержаны в харде. Пора бы и их в софте поддержать

Alex Rider
15.06.2013, 10:51
Пора бы и их в софте поддержать
Образы дискет на винте все равно имеют размер 2544 сектора. Игра может тупо не влезть (хотя, чтобы напихать в игру столько, тут нужен либо неплохой креатив, либо неумное воровство ресурсов). Программировать FAT16/32 для NemoIDE вообще не гуд, SMUC в своем разделе не позволит создать больший образ. По времени загрузки - да, оно будет быстрее, согласен, только тут особая поддержка не нужна - #3d13 работает одинаково что с дискетой, что с RAM-копией образа, что с образом на SMUC'е.
Хотя, все это брюзжание уже. Кому надо, соптимизирует (паковку никто еще не отменял, например). Делайте, будет здорово!

Максагор
15.06.2013, 12:32
Образы дискет на винте все равно имеют размер 2544 сектора. Игра может тупо не влезть

Поправочка: 2560 секторов. Про сектор каталога забыли! )))


Программировать FAT16/32 для NemoIDE вообще не гуд,

А если писать сразу под какую-нибудь существующую ОСь, подерживающую винт? Согласен, что TASiS или CP/M в данном случае неуниверсальны, ибо по сути получится игрушка под какой-то конкретный клон. Но если писать уже конкретно под iS-DOS, то тут уже бОльший простор.

P.S. Любителей/нелюбителей CP/M, iS-DOS и прочих сильно прошу не обсуждать достоинства и недостатки этих ОСей как таковых, а держаться темы написания игр под что-то бОльшее, чем образ TRD...

alone
15.06.2013, 13:00
Потому что предлагаемый им вариант удобнее как для разработки нового софта, так и для модификации существующего.
А мой вариант вообще не требует модификации существующего софта - он будет работать сразу.


Странцы с графикой должны быть впечатаны в адресное пространство в момент отрисовки графики. Вместе с ними должны быть впечатаны страницы со стеком, таблицей IM2, ISR и глобальными переменными, нужными графическим процедурам.
Страницы со стеком, кодом и таблицами где были, там и остаются. Добавляется только окно для экрана в #0000. Аппаратно это делается куда проще, чем блиттер.

---------- Post added at 12:00 ---------- Previous post was at 11:35 ----------

Кстати, опять-таки, если разработка ориентируется не на существующий софт, а только на БУДУЩИЕ переработки старых игр под 6912, то есть статистика: под спрайты TS-Labs'а (№1, №2) за два года их существования было адаптировано ровно ноль старых игр под 6912.

Alex Rider
15.06.2013, 13:35
Поправочка: 2560 секторов. Про сектор каталога забыли! )))
Нет, не забыл я про него, но не считаю правильным использовать его под данные.


А если писать сразу под какую-нибудь существующую ОСь, подерживающую винт?
Хочется универсальности. А как сделать программу, работающую одновременно и под iS-DOS, и под TR-DOS, и под ленту, ума не приложу (предчувствуя возражения по поводу загрузки мегабайтов с ленты, отвечу, что ленточные версии явно не должны загружать расширенную графику и GS-музыку).


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


Страницы со стеком, кодом и таблицами где были, там и остаются. Добавляется только окно для экрана в #0000.
Ok, подумал чуть, получается, если спрайты влезут на место старых плюс 2 * 8192 (в страницах с видео) + 6144 (старая экранная область), что вполне реально, то выключать код игры смысла нет (если игра привязана к IM1, и не терпит запрещения прерываний, придется переделать ее под IM2, и, возможно, сымитировать опрос клавиатуры, и, что маловероятно, обновление FRAMES). Это уже не сложно. Как и переделать процедуры вывода. Проблема с ATM-only останется. Дальше больше гадания, чем факты (прошу разъяснить, если не прав): предвижу, что спрайты все же должны храниться в памяти as is, а не в виде кода их вывода (иначе по оставшимся кускам памяти могут не уместиться), что кардинально уменьшает скорость их вывода. 14MHz рулят сильно не во всех существующих играх (включение их только на время вывода?).

---------- Post added at 13:35 ---------- Previous post was at 13:30 ----------


есть статистика: под спрайты TS-Labs'а (№1, №2) за два года их существования было адаптировано ровно ноль старых игр под 6912.
to TSL: Кстати сказать, за 2 года их существования я видел на форуме ровно 0 ссылок про архитектуру этого чуда и не знаю вообще что это и с чем его едят. Видел тут только ссылку на описание видеорежимов. По местной информации, эмуляция, вроде как, только появилась. Не исключаю, что я - слепой, но BaseConf явно пиарится гораздо лучше, за что спасибо alone. В условиях информационного голода ни писать под режим, ни адаптировать невозможно.

upd: Если я правильно понимаю тот факт, что спрайты и видеорежимы TS-Conf - это вещи разные.

Buyan
15.06.2013, 13:46
Кстати сказать, за 2 года их существования я видел на форуме ровно 0 ссылок про архитектуру этого чуда и не знаю вообще что это и с чем его едят. В условиях информационного голода ни писать под режим, ни адаптировать невозможно.


Все можно найти на http://tslabs.info/forum/

John North
15.06.2013, 14:31
Buyan, ты бы более конкретную ссылку дал..

Buyan
15.06.2013, 15:06
ты бы более конкретную ссылку дал..
Более конкретную на что? Человек написал что нет информации. А где еще искать информацию по TS-конфе, как не на форуме TS-Labs'а? Там есть темы по конфе со ссылками на доки, по эмулятору, есть FAQ, где есть ответы на много уже возникавших вопросов. А если ответов нет, то их там же и дадут. Я по крайней мере получил подробные ответы на все свои вопросы. В общем все как всегда - кому реально это интересно, тот там все и найдет, кому не нужно - найдет кучу отмазок, что все не то, да не так :)

Alex Rider
15.06.2013, 15:34
кому реально это интересно, тот там все и найдет
ok, я поищу, не проблема. Но в скобках замечу, что, кому реально интересно, чтобы его творение пользовалось успехом и поддержкой, активно рекламирует свой товар и собирает информацию в удобную "кучку" (http://nedopc.com/zxevo/zxevo.php). Есть такая по TS-Conf?

upd: есть (http://tslabs.info/forum/viewtopic.php?f=12&t=20), сорри. Я действительно слепой, искать почти не нужно :)

zx-kit
15.06.2013, 16:13
zst, создайте плиз новую ветку по видео-карте
Отдельная тема по видоекарте -- http://www.zx.pk.ru/showthread.php?t=21462

---------- Post added at 17:13 ---------- Previous post was at 17:11 ----------



В 6912 - да. Кстати, zst, а правда, что твоя карта при включении машины будет показывать стандантный экран 6912?

Да, после сброса она показывает стандартный экран.

alone
15.06.2013, 18:36
Цитата:





Сообщение от alone


А мой вариант вообще не требует модификации существующего софта - он будет работать сразу.




В 6912 - да.
Не только в 6912. Без переделки будет работать следующий софт под АТМ экраны: Little Viewer, ALASM, ANSI Viewer, Pang 16C, Ball Quest, Season of Sakura, Книга мёртвых: Потерянные души и Three Sisters' Story. А вариант от zst выйдет ВООБЩЕ БЕЗ СОФТА. Есть разница?

---------- Post added at 17:36 ---------- Previous post was at 17:31 ----------


если спрайты влезут на место старых плюс 2 * 8192 (в страницах с видео) + 6144 (старая экранная область)
Если спрайты влезут на место старых плюс 4 страницы минус 6912*2 (старые экранные области). То есть минимум 80К места под спрайты. Так что вполне можно и в виде процедур.

TSL
15.06.2013, 19:07
to TSL: Кстати сказать, за 2 года их существования я видел на форуме ровно 0 ссылок про архитектуру этого чуда и не знаю вообще что это и с чем его едят. Видел тут только ссылку на описание видеорежимов. По местной информации, эмуляция, вроде как, только появилась. Не исключаю, что я - слепой, но BaseConf явно пиарится гораздо лучше, за что спасибо alone. В условиях информационного голода ни писать под режим, ни адаптировать невозможно.
upd: Если я правильно понимаю тот факт, что спрайты и видеорежимы TS-Conf - это вещи разные.

1. Минимум двое людей (Blade, Buyan) разобрались с конфой практически на интуитивном уровне, что какбэ намекает. Еще несколько (budder, breeze, r0bat, amixgris, jerri - сорри если кого забыл) - путем расспросов в чяте. Но тоже - без проблем. Сравните с недоконфой - полно док, а толку?
2. Эмуляция появилась год назад в отбранченном мной анрыле.
3. Бейзконф конечно пиарится (уровень пиара где-то на уровне Лёни Голубкова - в каждом топике), тока там пиарить нечего.
4. Еще раз, тсконфа - это:
- пентагон 512кБ
- графика (4 бит/пикс, 8 бит/пикс, текстмод на ОДНОЙ странице в виде inc l - следующий символ, inc h - след. строка, аттрибуты +128 байт от символов, шрифт на смежной странице.)
- палитра 256 цветов из 15625 чанковых оттенков
- скроллеры
- спрайты (85 на строку) + тайлы (2 плоскости, 4096 тайлов)
- программируемая позиция ИНТа по экранному лучу во ВСЕМ диапазоне экрана (т.е. строчные ИНТы - это нормальный прием для синусных шаталок, палитродрочинга и тд)
- программируемый мл.байт адреса вектора ИМ2
- ДМА (память-память - 7МБ/с, память-ИДЕ - 7МБ/с, память-СД - 700кБ/с), для палитры 512 байт и спрайтовых массивов 512 байт. (Тут в топике была тема про то что надо в начале фрейма перекидывать спрайтовые дескрипторы в видяху, так вот ЛДИР 512 байт это ВНЕЗАПНО 11000+ тактов, ДМА это делает за 64), с поддержкой прямоугольных блоков (полезно в режимах графики, текстмоде и тайлах)
- кеш (эффективность на среднестатистическом коде ~95% от 14МГц)
- VDOS (эмуляция бетадиска путем АППАРАТНОГО перехвата обращений к ВГ93)
Вот так.
Это работает (на всех машинах тех, кто под это пишет), это эмулируется, это рулит!

---------- Post added at 18:07 ---------- Previous post was at 18:02 ----------

Народ, кто тут хочет делать спрайты. Не хочу размахивать руками что я тут гуру и посылать в сорцы, однако некоторый опыт имеется. Что хочу сказать:
- блиттер НЕЭФФЕКТИВЕН, он тратит впустую такты озу
- ОЗУ используйте только НА ЧТЕНИЕ спрайтовым движком, рендеринг - в фпрам альтеры, откуда же и выводить в видеовыход
- ОЗУ делайте не 8 бит, а чем больше, тем 16 или 32
Ну и ваще, както так ))

alone
15.06.2013, 19:35
Еще раз, тсконфа - это:
- пентагон 512кБ
Для сравнения, в бейзконфе одновременно Pentagon 1024 и АТМ Turbo 2+.


графика (4 бит/пикс
Несовместимо ни с чем. В бейзконфе она по стандарту ATM Turbo 2(+), а также по стандарту Pentagon 1024.


текстмод на ОДНОЙ странице
Без софта. В бейзконфе он работает в ALASM (версия под 80 символов в строке) и ACEdit.


- VDOS (эмуляция бетадиска путем АППАРАТНОГО перехвата обращений к ВГ93)
С точки зрения пользователя этот просер ЛЕ ничем не отличается от программного перехвата, который успешно используется в бейзконфе.

TSL
15.06.2013, 19:36
(---куча оверквотинга---)
Диагноз: АТМ головного мозга поцыента. Поможет только живительная эвтаназия.

alone
15.06.2013, 19:38
- блиттер НЕЭФФЕКТИВЕН, он тратит впустую такты озу
Это верно, но блиттер может решать практические задачи, на которые спрайты неспособны, например, наложение по маске (хотя бы в том же анаглифе) и bullet hell из сотен спрайтов.

TSL
15.06.2013, 19:40
Зато способен дисплей лист, который к сожалению уже не влез...
(И который ты хрен получишь от лвд, БУГОГА! :))))

ZXMAK
15.06.2013, 21:37
а как-же аппаратное ускорение 3D графики, кроме спрайтов и тайлов, нужна хотя-бы поддержка аппаратного наложения текстур

TSL
15.06.2013, 21:40
Стоп. А где я хоть словом обмолвился про 3Д? Движок проектировался на 2Д. Для 3Д нужны несколько другие вещи. И "хотя-бы поддержка аппаратного наложения текстур" совершенно недостаточна.

ZXMAK
15.06.2013, 22:02
Стоп. А где я хоть словом обмолвился про 3Д? Движок проектировался на 2Д. Для 3Д нужны несколько другие вещи. И "хотя-бы поддержка аппаратного наложения текстур" совершенно недостаточна.

вот этого спектруму и не хватает, спрайты можно и без аппаратной поддержки выводить, а вот с 3D на спектруме дела плохи. Потому аппаратная поддержка для этого очень нужна.

Alex Rider
15.06.2013, 22:07
Не только в 6912. Без переделки будет работать следующий софт под АТМ экраны: Little Viewer, ALASM, ANSI Viewer, Pang 16C, Ball Quest, Season of Sakura, Книга мёртвых: Потерянные души и Three Sisters' Story. А вариант от zst выйдет ВООБЩЕ БЕЗ СОФТА. Есть разница?
Да. Перечисленный софт работает под только под АТМ. Переделать другой софт под этот режим сложно. Карта от zst будет работать на любой машине с ZX-BUS. Софт переделывается несложно. Судя по описанию, графические процедуры из игр практически выкинутся, останется только отправка команд карточке (после загрузки спрайтов). Для режима ATM надо написать свои процедуры вывода спрайтов, щелкающие страницами в нулевом окне и выводящие спрайты, разбросанные в 4-х местах в памяти.

Если спрайты влезут на место старых плюс 4 страницы минус 6912*2 (старые экранные области). То есть минимум 80К места под спрайты. Так что вполне можно и в виде процедур.
То ли лыжи не едут, то ли я... Где в описании BaseConf написано, что в нулевое окно можно впечатать одновременно две страницы ОЗУ, работающих одна на чтение, другая за на запись? Если нет, то при впечатанных в остальные 3 окна стандартных страницах 5, 2, 0 для спрайтов остается старое место, старый экран в 5-й странице и 8кб во впечатанной с #0000 видеостранице, не занятых экранной областью. Откуда 80 Кб?

1. Минимум двое людей (Blade, Buyan) разобрались с конфой практически на интуитивном уровне, что какбэ намекает.
Сегодня за 2 часа почти победил посмотреть написанный под TS-Conf софт без вопросов на форумах. Читать много, ну так и отличий от клонов 90-х навалом. Осталось изобрести способ копирования PC-файлов на образ винта (это, думаю, к конфе отношения мало имеет), и будет мне щастье. Но, вообще говоря, чтобы не выглядеть на форуме TS идиотом и не получать комментарии о неумении читать доки, надо бы прошерстить весь форум прежде, чем задавать там вопросы.

---------- Post added at 22:07 ---------- Previous post was at 22:03 ----------


вот этого спектруму и не хватает,
Не вижу большой надобности. Для меня аппаратное 3D все-таки чуть за гранью Спектрума, потому что при построении таких картинок Z80 будет вообще отдыхать. Актуально будет только для неаутентичных дем, 3D-игры никто не напишет. Было бы неплохо реализовать 2D-примитивы с клиппированием - это да.

TSL
15.06.2013, 22:23
Но, вообще говоря, чтобы не выглядеть на форуме TS идиотом и не получать комментарии о неумении читать доки, надо бы прошерстить весь форум прежде, чем задавать там вопросы.
Да пох, у нас не недофорум :) Идиотом ты выглядеть не будешь. Живительный тролинг гарантирован только в случае невменяемости перса (особенно приветствуются буйные возгласы типа "атм - стандарт на века!!!1111АДИН") ну или борьбы за истину (как давеча было тут с человеком с ником Иван Северный, который тащемта слился зарегаться на тсфоруме и продолжить беседу ТАМ, в отсутствие модерации со стороны властей).
:)

---------- Post added at 21:19 ---------- Previous post was at 21:12 ----------

Не знаю, я за 3Д обеими ногами, но для 3Д нужен хороший концепт и неглупая реализация. Иначе, опять выйдет АТМ :)

---------- Post added at 21:23 ---------- Previous post was at 21:19 ----------

Еще автору карты на заметку:
если ты хочешь делать видяху в параллель основному (хоста) видеоконтроллеру, то надо отлавливать не только все порты и записи в видеопамять, но и щитать клоки зетника, как это делает анрыл, для синхронизации с мультиколорами. Фишка в том, что на хзбасе нету хостового клока (либо в пригодном виде, либо вообще), а потому этот клок надо восстанавливать из сигналов з80, которые на хзбасе есть. Задача практически реализуема.

Alex Rider
15.06.2013, 22:33
Еще автору карты на заметку:
Автор карты збежал от оффтопа сюда (http://zx.pk.ru/showthread.php?t=21462). Перекинь свои советы, плиз, в этот тред.

TSL
15.06.2013, 22:36
Дык я и там офтоп устрою :)

---------- Post added at 21:36 ---------- Previous post was at 21:33 ----------

Ой нееее... Почитал, поплакал. Советы там давать рано. Или уже поздно.

Valen
15.06.2013, 23:38
Ой нееее... Почитал, поплакал. Советы там давать рано. Или уже поздно.

Ну-ну,
по пунктам напиши.
Что там не так.

TSL
15.06.2013, 23:56
Боюсь кого-нить оскорбить, потому лучше понаблюдаю со стороны.

---------- Post added at 22:56 ---------- Previous post was at 22:53 ----------

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

Valen
15.06.2013, 23:58
Если критика конструктивная, чего обижаться то,
так обмен мнениями...

TSL
16.06.2013, 00:20
1. Дофига ненужных копирований.
2. Ограничиваться 2мя плоскостями неудачное решение.
Хорошо, что 2 срамы. Я бы предложил строить изображение спрайтовой графики построчным рендерером в буфер одной строки (память альтеры), используя графику из 1й срамы. С использованием набора ФСМ и дисплейлиста. Где нибудь в памяти (ОЗУ, ФПРАМ) лежит лист, в котором описана последовательность вызова ФСМ в каждой строке. Типы ФСМ: тайлы (текстмод), спрайты (массив прямоугольных объектов), линейная графика. Для "линейной графики" в листе можно указать адрес чтения графики в данной строке, и необязательно один, можно указать 2 или более источников и смешивать их по альфе. Слоев при это может быть немеряно.
Сюда же влазит и зумскейл спрайтов, потому что можно рассчитать адреса чтения пикселей в указанной строке экрана и координате Х по координатам и параметрам зумротации спрайта.
Во 2й сраме можно заюзать блиттер, которым например рисовать графические примитивы или делать текстурный маппинг. Т.е. делать вещи, которые невозможно привести к ФСМ для одной строки, и которые работают в течении фрейма.
Вывод видео читает данные из 2й срамы, накладывает поверх них (или по 0му цвету, или по альфе) оверлейный буфер, построенный по дисплейлисту из графики 1й срамы (кстати, в буфере можно хранить 4 байта РГБ+альфа).

ZEK
16.06.2013, 00:23
Подмена ПЗУ через порт #3ff7
вообще то ZXBUS сигнал есть который блокирует ПЗУ, к примеру оригинальный контролер TR-DOS его использует, он есть в KAY, Scorpion, Фениксе

zx-kit
16.06.2013, 10:38
1. Дофига ненужных копирований.
2. Ограничиваться 2мя плоскостями неудачное решение.
Хорошо, что 2 срамы. Я бы предложил строить изображение спрайтовой графики построчным рендерером в буфер одной строки (память альтеры), используя графику из 1й срамы. С использованием набора ФСМ и дисплейлиста. Где нибудь в памяти (ОЗУ, ФПРАМ) лежит лист, в котором описана последовательность вызова ФСМ в каждой строке. Типы ФСМ: тайлы (текстмод), спрайты (массив прямоугольных объектов), линейная графика. Для "линейной графики" в листе можно указать адрес чтения графики в данной строке, и необязательно один, можно указать 2 или более источников и смешивать их по альфе. Слоев при это может быть немеряно.
Сюда же влазит и зумскейл спрайтов, потому что можно рассчитать адреса чтения пикселей в указанной строке экрана и координате Х по координатам и параметрам зумротации спрайта.
Во 2й сраме можно заюзать блиттер, которым например рисовать графические примитивы или делать текстурный маппинг. Т.е. делать вещи, которые невозможно привести к ФСМ для одной строки, и которые работают в течении фрейма.
Вывод видео читает данные из 2й срамы, накладывает поверх них (или по 0му цвету, или по альфе) оверлейный буфер, построенный по дисплейлисту из графики 1й срамы (кстати, в буфере можно хранить 4 байта РГБ+альфа).

В принципе да, по моему способу сначала спрайты копируются блиттером из ОЗУ спрайтов в ОЗУ экрана, а потом сканером из ОЗУ экрана на TV. А у вас, имея код спрайта в памяти ПЛИС можно сканеру из этого номера получать адрес нужной точки в ОЗУ, загружать его и отображать на TV. Небольшая экономия при пересылках есть.

Кроме этого можно каждый кадр отправлять в видеокарту номера всех спрайтов, видимых на экране и смещения отображения всех спрайтов по-горизонтали и вертикали для реализации скроллинга. Только при однобайтных номерах на экране можно отобразить только спрайты до из набора 256, а в ОЗУ спрайтов может их быть до 2048 при размере спрайта 16х16.

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

Также больше двух слоев может пригодиться для игр типа DOOM2:
1 слой - оружие игрока
2 слой - ближайший монстр
3 слой - дальние монстры
4 слой - стены лабиринта и все остальное

Вроде все хорошо, но потом понадобится еще больше слоев, так как на слоях 3 и 4 может быть по нескольку загораживающих друг друга объектов.

Может лучше сделать один слой, но два экрана как ZX128 ? И добавить аппаратное копирование спрайтов на слой с учетом прозрачного цвета. Тогда мы просто путем копирования создаем фон, на него поочередно копируем все остальные спрайты, начиная с дальнего. Таким образом все объекты будут правильно загораживать дальних. А второй экран нам понадобится для отображения всей этой стопки объектов одним переключением экрана. А подготавливать изображение на том экране, который сейчас не отображается.

TSL
16.06.2013, 11:00
Такты блиттера: 1-чтение спрайта, 2-чтение фона, 3-запись в фон по маске, 4-чтение видеоконтроллером. Такты рендера: 1-чтение спрайта.

Параллакс у меня делается элементарно: для тайловых плоскостей - изменение Х офсета на строчных интах, для спрайтов - изменение координат спрайтов.

Я сразу и навсегда отказался от привязки "к экранам" типа зх128. Т.е. плодить костыли no-no. Экраны ЗХ вполне себе работают в качестве фоновой графики, но рекомендуется их отключать для экономии.

Тайлы нужны для генерации фонов, пейзажей. 4 слоя конечно труЪ, но 4 я себе позволить не смог на железе пентевы. Практика показала, что 2 тоже неплохо. Остальное можно дорисовать спрайтами, их овер 9990, все они по сути представляют собой отдельные слои.

Вообще идея изначально такая:
- ни один цикл доступа к драме не должен быть ненужным
- драма не должна простаивать ни одного свободного цикла.
Первое достигается за счет использования рендерера в оверлейный буфер, второе - за счет параллельной генерации заданий парсером объектов, в то время, как рендерер дрючит память и генерит пиксели. Практически - при 448 циклах драмы на одну строку изображения я получаю около 1700+ пикселей в строке. Посчитай сколько это только полных слоев, а слои-то в основном полупустые.

Вопрос: какая частота циклов доступа к СРАМ в твоем дизайне?

zx-kit
16.06.2013, 12:32
Такты блиттера: 1-чтение спрайта, 2-чтение фона, 3-запись в фон по маске, 4-чтение видеоконтроллером. VМаску тоже не надо накладывать.

Вы не обратили внимание, что я предлагал учитывать прозрачный цвет. Поэтому читать фон не надо, а если цвет прозрачный, то и записывать не надо.


Такты рендера: 1-чтение спрайта.
Параллакс у меня делается элементарно: для тайловых плоскостей - изменение Х офсета на строчных интах, для спрайтов - изменение координат спрайтов.

При аппаратном копировании прощев - скопировал в нужные координаты и забыл. Изображение потом сканер сам покажет на TV. Без дополнительных интов, хотя определенная польза в них есть.


Я сразу и навсегда отказался от привязки "к экранам" типа зх128. Т.е. плодить костыли no-no. Экраны ЗХ вполне себе работают в качестве фоновой графики, но рекомендуется их отключать для экономии.

В двух по-очередно отображаемых экранах есть польза. С одного экрана показываем на TV, а на другом неспешно рисуем спрайтами и линиями. К прерыванию все готово для отображения нового экрана. Для работы с предлагаемыми мной экранами мы просто указываем, какой экран отображается, а на каком строится изображение. Для этого достаточно в одном из параметров записать число 00000001 или 00000010 соответственно. В остальном работаем как и раньше - по координатам на экране.


Тайлы нужны для генерации фонов, пейзажей. 4 слоя конечно труЪ, но 4 я себе позволить не смог на железе пентевы. Практика показала, что 2 тоже неплохо. Остальное можно дорисовать спрайтами, их овер 9990, все они по сути представляют собой отдельные слои.
/[QUOTE]
Когда слой один, но есть аппаратное копирование с учетом прозрачного цвета, слои уже не очень и нужны. Можно наложить достаточно много объектов в одно место и они отобразятся правильно на экране. При этом нужно будет прочитать информацию только из одного слоя. Экономия времени !
[QUOTE]
Вообще идея изначально такая:
- ни один цикл доступа к драме не должен быть ненужным
- драма не должна простаивать ни одного свободного цикла.
Первое достигается за счет использования рендерера в оверлейный буфер, второе - за счет параллельной генерации заданий парсером объектов, в то время, как рендерер дрючит память и генерит пиксели. Практически - при 448 циклах драмы на одну строку изображения я получаю около 1700+ пикселей в строке. Посчитай сколько это только полных слоев, а слои-то в основном полупустые.

Вопрос: какая частота циклов доступа к СРАМ в твоем дизайне?
Частота памяти 56 МГц. Шина 16 бит. Микросхемы две. Копирование спрайта из одной SRAM в другую - за один такт до 2х точек при 256 цветах. При одном слое также для рендера можно прочитать за один такт сразу 2 точки! На чтение потратится всего 1/16 часть времени. Остальные 15/16 времени можно копировать.

TSL
16.06.2013, 12:34
Ну вобщем развернуться есть где по скорости.

char
16.06.2013, 14:44
сделайте поддержку автономных расчетов массивов поворачиваемых 3D-точек, сортировку по глубине, выброс на экран пачек полигонов, автовывод чанковых окон, - это будет интересная к поддержке видеокарточка, что-то действительно новое, а очередная похожая на денди спрайтовка пока не очень-то вдохновляет ;)

Alex Rider
16.06.2013, 16:06
сделайте поддержку автономных расчетов массивов поворачиваемых 3D-точек, сортировку по глубине, выброс на экран пачек полигонов, автовывод чанковых окон, - это будет интересная к поддержке видеокарточка
А каких продуктов под такую карточку ты ожидаешь?

char
16.06.2013, 16:26
А каких продуктов под такую карточку ты ожидаешь?

игры, демки, новые возможности...
простота для вызова/использования "велосипедов".

в отличии от исчерпавшихся, неинтересных к очередному повторению, спрайтов.

jerri
16.06.2013, 17:00
char, а смысл?
каких игр ты хочешь под z80?
Ты в них играть будешь?
А тот парень с улицы?

char
16.06.2013, 17:07
char, а смысл?
каких игр ты хочешь под z80?
Ты в них играть будешь?
А тот парень с улицы?

буду, и уверен, что будут.

при такой постановке вопроса, а смысл тогда вообще что-то делать?
а смысл делать спрайты?
а смысл писать игры на бейсике и потом играть в них?
а смысл просто писать игры и демки?

интерес есть - делаем, интереса нет - не делаем, всё просто.

TSL
16.06.2013, 17:19
Давно пора, кстати.

---------- Post added at 16:19 ---------- Previous post was at 16:17 ----------

ТСконфа это пробный продукт, из железа пентевы выжал все, что смог, да и пентева довольно распространенное железо.

ZXMAK
16.06.2013, 18:44
игры, демки, новые возможности...
простота для вызова/использования "велосипедов".

в отличии от исчерпавшихся, неинтересных к очередному повторению, спрайтов.

Согласен, риалтайм 3d для спектрума - это действительно новая и интересная тема, в отличие от спрайтов, которые практически во всех играх и без аппаратной поддержки есть. То что у спрайта можно будет 256 цветов на точку юзать не особо будет отличаться от 16 цветов обычного спектрума

Alex Rider
16.06.2013, 18:56
буду, и уверен, что будут.
Играть-то будут, не вопрос. Писать не будут. Ну, разве что, демо. Потому что игра с 3D-графикой - это гораздо более амбициозная задача, чем спрайтовая игра. В одно лицо делается с трудом и за долгое время. А демы... Ну сейчас делают демо с 400 точек / 40-50 линий / 3-4 3D-объекта, показывая кодерское мастерство. Когда мощный проц рядом со Спеком будет рисовать тысячи точек, сотли лини и десятки объектов, какое мастерство тогда показывать? Умение расположить объекты красиво? Будут они летать и кружиться по другим траекториям, а что принципиально нового? Что интересного смог реализовать кодер?
Но я все-таки не противник такого девайса. Если его сделать не сложно, и писать под него не сложно, пусть будет, нужны всякие результаты творчества. Но сотен игр и дем под такой наворот я не вижу. Карточка с аппаратными спрайтами хороша тем, что позволит адаптировать уже написанный софт, который станет красимше и шустрее.

jerri
16.06.2013, 23:31
буду, и уверен, что будут.

при такой постановке вопроса, а смысл тогда вообще что-то делать?
а смысл делать спрайты?
а смысл писать игры на бейсике и потом играть в них?
а смысл просто писать игры и демки?

интерес есть - делаем, интереса нет - не делаем, всё просто.

есть только 1 способ массово заставить людей делать что-то (игры, хлеб, трусы) - платить за это деньги. Я не буду осваивать новое уникальное железо если не увижу где я смогу заработать.

То что Zst что-то делает делает ему честь. И может быть, если у меня будут лишние деньги, я и прикуплю его изделие. Но я об этом знаю. Но как заставить того парня с улицы купить изделие Zst?
Компания Sony анонсируя новую PS готовит под нее 3-4 хита.
Есть ли у тебя достаточно денег оплатить создание 3-4 игровых программ?
дальше распинаться не буду, если есть мозги то сам поймешь, почему в СССР доминировал спектрум, а не БК0010

alone
17.06.2013, 13:21
Перечисленный софт работает под только под АТМ.
Перечисленный софт НЕ ИСПОЛЬЗУЕТ маппер памяти АТМ, только видеорежимы. Если реализовать эти видеорежимы на видеокарте, то перечисленный софт будет работать НА ЛЮБОМ СПЕКТРУМЕ без переделки.


Где в описании BaseConf написано, что в нулевое окно можно впечатать одновременно две страницы ОЗУ, работающих одна на чтение, другая за на запись? Если нет, то при впечатанных в остальные 3 окна стандартных страницах 5, 2, 0 для спрайтов остается старое место, старый экран в 5-й странице и 8кб во впечатанной с #0000 видеостранице, не занятых экранной областью. Откуда 80 Кб?
Зачем тебе впечатывать две страницы на место одной???
В игре под 128К страница в #c000..#ffff переключается. Код, таблицы прерываний и обработчик прерываний лежат в #6000..#bfff. При переделке под АТМ графика во время вывода будет подключаться в #c000, экран в #0000.

80К - это элементарная арифметика.
Имеем 256К ОЗУ.
Вычитаем 64К под два экрана 16C.
Остаётся 192К.
Вычитаем 128К-(2*6912) - старые код и данные игры.
Остаётся 77.5К.
Поскольку спрайтов в 128К игре уж точно было не меньше 2.5К, то под АТМ будет 80К под спрайты.

---------- Post added at 12:13 ---------- Previous post was at 12:11 ----------


Цитата:
Сообщение от alone Посмотреть сообщение
Подмена ПЗУ через порт #3ff7
вообще то ZXBUS сигнал есть который блокирует ПЗУ, к примеру оригинальный контролер TR-DOS его использует, он есть в KAY, Scorpion, Фениксе
Я про него и говорю. Остальные окна АТМовского маппера памяти эмулировать невозможно.

---------- Post added at 12:15 ---------- Previous post was at 12:13 ----------


Также больше двух слоев может пригодиться для игр типа DOOM2:
1 слой - оружие игрока
2 слой - ближайший монстр
3 слой - дальние монстры
4 слой - стены лабиринта и все остальное
Зачем ближайшего монстра рисовать на отдельном слое, не там, где остальных? Зачем вообще монстров рисовать на отдельном слое, не там, где стены?

---------- Post added at 12:21 ---------- Previous post was at 12:15 ----------


Когда мощный проц рядом со Спеком будет рисовать тысячи точек, сотли лини и десятки объектов, какое мастерство тогда показывать?
Такой проц уже есть - в NeoGS. И таки да, для программирования нужно мастерство. Ибо пока только одна дема, и та моя.

baxter
17.06.2013, 14:42
Интересно, а возможно ли переделать или доработать NeoGS, как видеокарточку?

alone в одной из своих дем использовал неоГС как графический акселератор.

---------- Post added at 14:42 ---------- Previous post was at 14:34 ----------

THE LINK (http://zxaaa.untergrund.net/view_demo.php?id=1471), если не ошибаюсь.

Alex Rider
17.06.2013, 17:36
Перечисленный софт НЕ ИСПОЛЬЗУЕТ маппер памяти АТМ, только видеорежимы. Если реализовать эти видеорежимы на видеокарте, то перечисленный софт будет работать НА ЛЮБОМ СПЕКТРУМЕ без переделки.
ok, отлично, тут я тебя понял, возражений не имею. Может и есть смсл сделать в карте эти режимы чтобы получить сразу не 0 поддержанных программ на любом приличном спеке.


Зачем тебе впечатывать две страницы на место одной???
В игре под 128К страница в #c000..#ffff переключается. Код, таблицы прерываний и обработчик прерываний лежат в #6000..#bfff. При переделке под АТМ графика во время вывода будет подключаться в #c000, экран в #0000.
Получается, что малой кровью можно переделать только 128к-игры, которые предполагают щелканье страниц во время основного игрового процесса (а не тупо подменяют спрайты и схему уровней из страниц). 48к-игры для твоего видеорежима надо разбирать по винтикам все равно. Для режима zst - нет.

gurfunkel
18.06.2013, 21:50
То что у спрайта можно будет 256 цветов на точку юзать не особо будет отличаться от 16 цветов обычного спектрумаВсё таки практика на PC показывает, что EGA и VGA графика значительно различаются.

ZXMAK
19.06.2013, 01:58
Также больше двух слоев может пригодиться для игр типа DOOM2:
1 слой - оружие игрока
2 слой - ближайший монстр
3 слой - дальние монстры
4 слой - стены лабиринта и все остальное



а еще можно сделать 256 слоев и аппаратную поддержку воксельных 3D спрайтов :smile:
Даешь на спектруме такую графику!

http://www.youtube.com

zx-kit
01.04.2015, 05:23
Я давно мечтаю сделать модульный ZX SPECTRUM. Но все никак не складывалось. То одним проектом увлекался, то другим. Так прошло уже около 5 лет. Может это и к лучшему, что я отложил этот проект. Однако я постоянно о нем думал и делал наброски. Иногда идее надо отстояться, чтобы нашлось подходящее для реализации решение. И, как мне кажется, я это решение нашел. В своем новом клоне HEPTAGON-128 я планирую использовать шину ZST-BUS.

Хорошо бы делать все контроллеры на микросхемах 555 серии как в старом добром ЛЕНИНГРАД 1, его улучшенной версии LENINGRAD-2012 или демо-компьютере PENTAGON-128. Но некоторые контроллеры проще реализовать в ПЛИС/FPGA, например, видеокарту. Только тут одна важная проблема - большинство ПЛИС/FPGA не дружат с пятивольтовыми сигналами. Исключением является серия MAX3000 в видеоконтроллере VGA&PAL.

Для ПЛИС/FPGA требуется стабилизатор 3.3V и согласование всех сигналов ZX-BUS с уровнем 3.3V. Если стабилизатор и схемы согласования добавлять в схему каждого контроллера с ПЛИС/FPGA - усложняется плата, увеличивается плата, дорожает плата, дорожают детали, усложняется пайка. Короче - одни усложнения.

Решением является размещение стабилизатора 3.3V и схем согласования на материнской плате. А уже новые сигналы размахом 3.3V подавать на разъемы новой шины ZST-BUS. Кроме трехвольтовой шины данных останется и пятивольтовая для возможности подключать к шине данных микросхемы с размахом сигналов данных до 5V. А трехвольтовые сигналы адреса и управления подходят и для трехвольтовых микросхем и для питивольтовых.

Это напоминает переход с пятидюймовых дискет на трехдюймовые...

Bobo
01.04.2015, 22:02
Только тут одна важная проблема - большинство ПЛИС/FPGA не дружат с пятивольтовыми сигналами. Исключением является серия MAX3000


А также ACEX 1K, SPARTAN-II, XC9500

причем купить их сейчас проблемы не составляет

zx-kit
02.04.2015, 06:10
А также ACEX 1K, SPARTAN-II, XC9500

причем купить их сейчас проблемы не составляет
Надо смотреть на более современные, чем MAX3000 микросхемы Altera: MAX2,5, CYCLONE 1,2,3.


Кратко напомню идею модульного ZX SPECTRUM. Что в одноплатном, что в модульном компьютере, схема и функции компьютера примерно одинаковые. Но в модульном компьютере остается возможность замены отдельных блоков схем, размещенных на разных модулях. То есть, в модульном компьютере проще разработка и модернизация отдельных модулей.

Например, если ZXM-PHOENIX разделить на три платы - получится KAY-2010 + NEMO_FDC + NEMO_HDD. HEPTAGON-128 получится если разделить PENTAGON-128 на 7 плат - MOTHER BOARD и модули CPU&ROM, RAM 128K, IN-OUT, AUDIO YAMAHA, NEMO_FDC_PLUS и VIDEO. Схемы расширения памяти, подключения музыкального сопроцессора и дисковода на большинсве плат есть. Поэтому, не обязательно их делать под шину ZX-BUS. В своем компьютере я могу применить свою внутреннюю шину ZST-BUS. Кроме этого, на модуле CPU&ROM можно разместить три слота ZX-BUS, куда можно будет переставить контроллеры со старых компьютеров.

zx-kit
03.04.2015, 17:59
Модули на микросхемах DIP: CPU&ROM, RAM 128K, AUDIO YAMAHA, NEMO_FDC_PLUS.
Модули на ПЛИС/FPGA: IN-OUT, VIDEO.

Еще одним новшеством будут раздельные входные сигналы IORD, IOWR и выходные сигналы MY_IORD_ADDR и MY_IOWR_ADDR. Это позволит блокировать следующие контроллеры в шине ZST-BUS только на запись, только на чтение или оба сразу.

Также будут изменены разъемы на материнской плате и контроллерах. Существующие разъемные соединения из слота и краевого разъема, покрытого припоем не очень надежны. Также можно установить плату не той стороной. В шине ZST-BUS планируется использовать разъемы типа DIN 2*32=64 контакта. Заодно упорядочить расположение шин адреса, данных и управления. А питание +1.25V. +3.3V, +5V, GND подавать на пары контактов ближе к задней стенке корпуса с разъемами.

chicagoalex75
15.04.2015, 22:45
С интересом прочитал всю твою ветку. На мой взгляд, прекрасная идея. Приятно видеть, что она постепенно реализуется в железе. Давно собираюсь создать нечто подобное с ребёнком, поэтому и оказался здесь. Скажи, а в чём недостаток этого конструктива: http://www.mycpu.thtec.org/ ? Мне кажется, что если грамотно поработать над этой конструкцией, можно получить практически Arduino на процессоре Z80. Платы расширения-в виде шилдов. У этого парня размер плат 100х150мм. Это позволяет свободно изготавливать их дома ЛУТ методом. Устройство получится очень компактным даже если делать неплотную компоновку элементов. Отлаживать тоже можно-достаточно подключить нужную плату проводами с разъёмами на концах. Для совместимости с существующим железом можно сделать шилд со стандартными слотами. Хочу свой пентагон-128 реализовать именно так. Вчера заказал горсть вот этого: http://www.ebay.com/itm/291370214761?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT. К сожалению,двухрядных цанговых разъёмов с длинными ногами не нашёл.
Можешь ли подсказать, исходя из своего опыта, достаточно ли они надёжны для такой конструкции? И ещё вопрос-разбивая плату компьютера на блоки мы удлиняем шинные и сигнальные проводники, не скажется ли это на стабильности работы? На первый взгляд вроде не должно, если сделать правильную разводку, да и у парня с mycpu.thtec.org система прекрасно работает на 8мгц, а наша всего на 3.5.
Насколько стабильна твоя слотовая конструкция?

zx-kit
19.05.2015, 17:08
Вот не могу не разрабатывать и все тут ! Идея модульного комьпьютера должна быть реализована ! После первого поста в 2009 году вышло несколько версий ZXM-PHOENIX, KAY-2010, новый SCORPION, SPECCY2010, ZX-EVO, LENINGRAD-2012, несколько версий ReVeRse, компьютер Лисицина и еще много одноплатных компьютеров. Но модульный компьютер так и не был реализован. Жалко, что Блэк Кэт теперь не с нами.

Кое-что, что критиковал в первоначальной идее Блэк Кэт, думаю теперь можно исправить. Он писал, что компьютер с семью-десятью слотами работать не сможет. А теперь для совместимости с 3.3 V я планирую поставить между Z80 и шиной ZST-BUS буферные элементы 74LVC245, которые согласуют и усилят сигналы. Задержки у них небольшие, около 4 ns.

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

Модульный компьютер "HEPTAGON-128" планируется сделать на базе кросс-платы с 7 разъемами. Для совместимости с ZX-BUS планируется возможность установки слотов SL-62. Кто хочет повысить надежность контактирования модулей могут установить для каждого контроллера пару разъемов DIN64. Так, кстати, было сделано на материнской плате ZX-NEXT. Для совместимости желательно не использовать 63 и 64 контакты. Большинство сигналов лучше оставить на своих местах. Это шина адреса, шина данных, большинство сигналов управления, питания.

Так как в шине ZX-BUS есть 9 свободных контактов и несколько неиспользуемых сиганлов - их использовать для совместимости шины данных с 3.3 V устройствами и обеспечения реализации новых возможностей. Шина 12 V используется только в одном контроллере дисководов, а это зря занятый сиганал на разъеме. Поэтому его заменяем на 3.3 V. А 12 V можно подать с разъема питания PC или внешнего источника напрямую. Питание 5 V и GND тоже можно было бы сократить по количеству контактов, но это не следует делать для сохранения совместимости с существующими контроллерами !

На модуле CPU будут 5 буферов 74LVC245 и стабилизатор 3.3 V. Два буфера для согласования шины адреса, один - для основных сигналов шины управления. Один буфер для трехвольтовой шины данный на запись и пятый - для трехвольтовой шины данных на чтение. Активация буфера на запись - автоматическая с примененением простой схемы. С буфером на чтение несколько сложнее. Каждый контроллер, который хочет выдать данные на трехвольтовую шину данных должен выставить 0 на сигнал c рабочим названием 3.3V_BUF_EN. Сигналы от всех контроллеров складываются через диоды и активизируют буфер чтений. Вроде просто и надежно. Пятивольтовая шина данных остаются как в старой шине ZX-BUS без буферирования. С ней соединяются микросхемы с пятивольтовым питанием.

Как я уже говорил, в текущей концепции на материнской плате 7 мест под разъемы. Планируется распространять отдельно печатную плату и разъемы. Каждый пользователь сможет приобрести у меня или в другом месте разъемы SL-62 (более простой вариант) или пару DIN64 (более надежный вариант). Совместимость с выпускаемыми контроллерами для шины ZX-BUS надо сохранить. Если они не используют сигналы 12 V, сигналы прямого доступа к памяти и свободные сигналы, то контроллеры будут работать и в новом компьютере.

Новые контроллеры на базе микросхем с 3.3 V питанием можно будет подключить к шине ZST-BUS, так как согласование с сигналами Z80 сделано централлизовано на плате CPU. Остальные сигналы согласуются на плате контроллера при необходимости использования. Подключение новых контроллеров к старым компьютерам тоже будет возможно, но потребуется плата согласования TRITON с буферами и стабилизатором 3.3.V и тремя разъемами ZST-BUS.

zx-kit
21.05.2015, 05:30
Черновое расположение новых сигналов в шине ZST-BUS:

17A (свободен) = RD_TBUS (включение чтения через трехвольтовый буфер шины данных)
18A (свободен) = TD0 (бит 0 трехвольтовой шины данных)
19A (BRQ) = TD1 (бит 1 трехвольтовой шины данных)
26A (BUSAK) = TD2 (бит 2 трехвольтовой шины данных)
15B (HALT) = TD3 (бит 3 трехвольтовой шины данных)
20B (свободен) = TD4 (бит 4 трехвольтовой шины данных)
22B (свободен) = TD5 (бит 5 трехвольтовой шины данных)
23B (свободен) = TD6 (бит 6 трехвольтовой шины данных)
25B (RFSH) = TD7 (бит 7 трехвольтовой шины данных)
29B (+12V) = +3.3V

Сигнал RD_TBUS подтянут резистором 10 К к +3.3V в модуле CPU. Там же буфер чтения с трехвольтовой шины данных в Z80. Каждый контроллер, из которого нужно прочитать данные в Z80 (через трехвольтовую шину данных) подает низкий уровень через диод или элемент с открытым коллекором на контакт RD_TBUS. Этот сигнал подается на вход OE буфера 74LVC245 и данные с трехвольтовой шины поступают на шину данных Z80. При формировании сигнала используются адреса и требуемые сигналы из TM1, TIORQ, TRD, TMREQ. Таким образом, в новых контроллерах можно будет использовать трехвольтовые регистры, SRAM, ПЛИС или FPGA.

Чтение через пятивольтовую шину данных происходит как и раньше напрямую в Z80.

Основные сигналы шины адреса (TA0-TA15), шины данных (TD0-TD7) и шины управления (TM1, TIORQ, TMREQ, TRD, TWR) в новой шине ZST-BUS - трехвольтовые (точнее 3.3V) и могут непосредственно подаваться на микросхемы с питанием +3.3V. Это упростит и удешевит разработку контроллеров на современной элементной базе.

Схема блокировки менее приоритетных контроллеров с помощью сигнала IORQGE остается без изменений для совместимости с существующими контроллерами. Хотя она и имеет недостатки - уровень логической единицы на резисторе 680 Ом нельзя формировать напрямую с выхода микросхемы серии К555/К1533 - нужен транзистор или элемент с большим выходным током единицы. Блокировка только на чтение работает плохо - могут проскакивать импульсы. Если контроллеры используют для формирования IORQGE сигнал IORQ - блокировка работает неустойчиво.

Тут можно было бы совместно подумать, как можно немного улучшить. Но потребуется занять дополнительные контакты в разъеме шины и появится несовместимость со старыми контроллерами

zx-kit
07.06.2015, 12:13
Для совместимости с микросхемами MAX V и Cyclone надо на контакты 61 и 62 разъемов подать питание со стабилазаторов +1,2V и 1,8V. Стабилизаторы лучше разместить на материнской плате.

Для начала, наверно, как я и думал раньше в качестве образца компьютера взять "Speccy2007" 128 K. Нарисовать схему с доработкой до 128К, который мы собирали из микросхем DIP из двух плат. Схему разделить на модули. Потом спаять каждый модуль навесным монтажом, используя макетку+плату ZX-BUS TEE. А дальше начнется постепенный апгрейд. "Speccy2007" можно разделить на 5 модулей:

CPU - Z84C006 (DIP-40)
RAM - 128K (SOIC-32)
ROM - FLASH 128K (DIP-32)
VIDEO & CONTROL - EPM7128 (PLCC-84), VIDEO RAM 32K (DIP-28), 3 буфера 74HCT245 (DIP-20), генератор 14 МГц на 555ЛН1 (DIN-14)
IN-OUT - ATMEGA32 (DIP-40), SD-CARD, PS/2 KEYBOARD, стабилизатор +3.3 V.

Материнскую плату пока использовать ту что есть со слотами SL-98.
Потом можно будет подумать об апгрейде видеокарты на другой ПЛИС, возможно промежуточный вариант к "METEOR".

batr
14.07.2015, 19:57
Для совместимости с микросхемами MAX V и Cyclone надо на контакты 61 и 62 разъемов подать питание со стабилазаторов +1,2V и 1,8V. Стабилизаторы лучше разместить на материнской плате.

Для начала, наверно, как я и думал раньше в качестве образца компьютера взять "Speccy2007" 128 K. Нарисовать схему с доработкой до 128К, который мы собирали из микросхем DIP из двух плат. Схему разделить на модули. Потом спаять каждый модуль навесным монтажом, используя макетку+плату ZX-BUS TEE. А дальше начнется постепенный апгрейд. "Speccy2007" можно разделить на 5 модулей:

CPU - Z84C006 (DIP-40)
RAM - 128K (SOIC-32)
ROM - FLASH 128K (DIP-32)
VIDEO & CONTROL - EPM7128 (PLCC-84), VIDEO RAM 32K (DIP-28), 3 буфера 74HCT245 (DIP-20), генератор 14 МГц на 555ЛН1 (DIN-14)
IN-OUT - ATMEGA32 (DIP-40), SD-CARD, PS/2 KEYBOARD, стабилизатор +3.3 V.

Материнскую плату пока использовать ту что есть со слотами SL-98.
Потом можно будет подумать об апгрейде видеокарты на другой ПЛИС, возможно промежуточный вариант к "METEOR".

Напряжения питающие ядра ИМС (1,2 В и подобное), обычно, формируется непосредственно у микросхемы потребителя. Это, так называемое, распределённое питание. Я вам не рекомендую данный тип напряжения формировать по принципу "одно на всех", особенно в многоплатной конфигурации.

zx-kit
15.07.2015, 06:02
Напряжения питающие ядра ИМС (1,2 В и подобное), обычно, формируется непосредственно у микросхемы потребителя. Это, так называемое, распределённое питание. Я вам не рекомендую данный тип напряжения формировать по принципу "одно на всех", особенно в многоплатной конфигурации.
Да, я погорячился. А может и все остальные стабилизаторы тоже надо поближе к FPGA? Будет меньше помех и нагрев стабилизаторов по сравнению с общим стабилизатором.

batr
15.07.2015, 19:50
Если не будет отдельной специальной платы питания, то разместить на плате центрального процессора источники +12, +5, +3,3В, а остальные низковольтовые источники (питание ядра ПЛИС и т.п.) формировать непосредственно у потребителей. Это разумно ещё и потому, что разные ИМС требуют разное напряжение для своих ядер (0,9В, 1,0В, 1,1В, 1,2В и т.д.). Другая причина связана с тем, что разъёмное соединение имеет определённое сопротивление, а значит на нём будет падать определённое напряжение, что, например, для напряжения 0,9В очень существенно.
Если есть опасение, что будет греться стабилизатор, то тогда поставь DC/DC. А с помехами нужно бороться хорошей разводкой ПП и керамическими конденсаторами, снижая импеданс источника питания.

zx-kit
24.07.2015, 05:04
Если в модульный компьютер будет установлена видеокарта типа "Meteor Graphics" на базе FPGA и SDRAM, то модуль RAM не нужен.
Тогда минимальный состав модульного компьютера такой:

Материнская плата (7 гнезд SL-62 или DIN64 и схема приоритетов ZX-BUS)
Модуль CPU (Z80, стабилизатором +3.3V и согласующими буферами 74LVC245)
Видеокарта "Meteor Graphics" (выход на VGA/SCART и до 1 M для RAM компьютера)
Модуль ROM (FLASH 128K DIP32)
Модуль IN-OUT (клавиатура, джойстик, BEEPER, чтение с MP3-плеера)

zx-kit
04.10.2015, 08:37
Текущая конфигурация проекта модульного компьютера.
В качестве базы будет применяться кроссплата "HEPTAGON" с шиной ZST-BUS с семью розетками DIN-64 для подключения контроллеров. Кроссплата "HEPTAGON" может быть использована также для расширения возможностей маленьких компьютеров класса Ленинград или оригинального ZX SPECTRUM. Разъемы DIN-64 увеличат надежность подключения контроллеров и упростят макетирование самодельных устройств, так как к ним легко припаять обычную макетную плату без краевых разъемов. Шина ZST-BUS облегчит подключение устройств на трехвольтовых (точнее +3.3V) микросхемах.

http://s018.radikal.ru/i523/1510/65/f72624f53b76t.jpg (http://s018.radikal.ru/i523/1510/65/f72624f53b76.jpg) http://s011.radikal.ru/i315/1510/b0/35d7f680832at.jpg (http://s011.radikal.ru/i315/1510/b0/35d7f680832a.jpg)

К кроссплате "HEPTAGON" можно будет подключить следующие модули:
0. CPU+ROM: Z80 и FLASH в корпусах DIP
1. RAM: статическое ОЗУ 128K
3. AUDIO: музыкальный сопроцессор YAMAHA
4. VIDEO: видеокарта "Meteor Graphics"
5. IN-OUT: плата стандартных ZX портов + Super Joystick Port 2 со входом для USB клавиатуры
5. дополнительный контроллер для ZX-BUS или ZST-BUS
6. дополнительный контроллер для ZX-BUS или ZST-BUS
7. дополнительный контроллер для ZX-BUS или ZST-BUS

Старые контроллеры ZX-BUS можно будет подключить через вилку DIN-64, которую надо будет припаять на контроллер.

Описание кроссплаты "HEPTAGON":
7 розеток DIN-64 для надежного и простого подключения контроллеров
1 вилка DIN-64 для подключения к главному модулю или компьютеру
1 краевой разъем как на оригинальном ZX SPECTRUM для подключения иностранных устройств
Усиленные с помощью буферов 74LVC245AD шина адреса и шина управления Z80
Диспетчер шины (формирователь сигналов IORQ, IORQGE) как на плате ZX-BUS TEE и KAY-2010, но микросхемы серии 74LVC.
Стабилизатор +3.3V для микросхем 74LVC и новых контроллеров без своего стабилизатора. Используется линия, которая раньше была +12V.
Дополнительная трехвольтовая шина данных из двух буферов 74LVC245AD. Используются 7 свободных линий ZX-BUS и неиспользуемые линии типа BUSRQ. На запись из Z80 в трехвольтовые устройства буфер открывается при WR=0. На чтение из трехвольтового устройства в Z80 открывается от сигналов с трехвольтовых контроллеров, объединенных через диоды.

Плата "HEPTAGON" будет подключаться к компьютерам через шлейф с розеткой DIN-64 на одном конце. На другом конце шлейфа:
К оригинальному компьютеру ZX-SPECTRUM - слот SL-62.
К LENINGRAD-2012 - пайка шлейфа к краевому разъему.
К Ленинграду1 - пайка шлейфа к Z80 и нескольким сигналам на плате.
К компьютерам с шиной ZX-BUS через плату ZX-BUS EDGE.

К главному модулю CPU+ROM подключаться будет без шлейфа через ответный разъем.

При желании расширить количество слотов возможно подключения к компьютерам с шиной ZX-BUS. Только нужно учитывать, что в документации к ZX-EVO написано, что контроллеры, использующие те же адреса, что и внутри ZX-EVO работать не будут. Также там могут быть вопросы с сигналами INT и F (14MHz).

---------- Post added at 10:37 ---------- Previous post was at 08:48 ----------

Для совместимости контроллеров с оригинальным ZX SPECTRUM и ZX-EVO на плату HEPTAGON и укороченную версию TRITON надо добавить генератор 14MHz на 555ЛН1 или 74HCT04D.

ZX_NOVOSIB
04.10.2015, 08:51
zst, Вадим, надеюсь за всеми этими масштабными проектами у вас хватит сил допилить ваш вга-конвертер до совместимости с фирменными спектрумами ;)

zx-kit
06.10.2015, 06:00
zst, Вадим, надеюсь за всеми этими масштабными проектами у вас хватит сил допилить ваш вга-конвертер до совместимости с фирменными спектрумами ;)
Возможно и не хватит.

ZX_NOVOSIB
06.10.2015, 09:46
Возможно и не хватит.
Всё-таки надо надеятся на лучшее, вдруг хватит )) Буду молить бога, чтобы он послал вам сил и здоровья ) Ну если нет, так нет, но ведь надежда умирает последней.

zx-kit
18.10.2015, 15:32
VELESOFT, смотрю я на ваши устройства. Хорошие устройства, но к нашим клонам не подключить, а наши устройства - к вашим. Давайте совместно разработаем универсальный модуль расширения для оригинального ZX Spectrum и наших клонов. Тогда новые контроллеры можно было бы разрабатывать интернационально и работали бы они на любом компьютере.

Предлагаю за основу шину ZST-BUS. На ней буферы шины адреса, данных и управления на 74LVC245AD. Разъемы использовать DIN-64. 3 розетки - TRITON, 5 розеток - PENTAGON, 7 розеток - HEPTAGON. Один слот оставить для старых контроллеров ZX-BUS/NEMO-BUS. Новые контроллеры можно будет разрабатывать на ПЛИС или FGPA без дополнительных схем согласования. Дополнительные 8 линий будут для 3.3V шины данных.

http://s017.radikal.ru/i406/1510/24/225d8f87cd3dt.jpg (http://s017.radikal.ru/i406/1510/24/225d8f87cd3d.jpg)

Примерный вид нового контроллера с угловой вилкой DIN-64. Плату расширения можно будет через шлейф подключать и к оригинальным компьютерам и к клонам. Это будет лучше, чем расширители на весу.
http://s017.radikal.ru/i418/1510/4b/5a9095a07a25t.jpg (http://s017.radikal.ru/i418/1510/4b/5a9095a07a25.jpg)

Так мы сможем расположить расширитель на столе рядом с компьютером. Шлейф обеспечит гибкое соединение с платой компьютера.
У тас тоже много оригинальных компьютеров. Надо сделать стандарт для разработки новых устройств. Это будет выгодно всем.

http://s020.radikal.ru/i720/1510/36/a4fc890dc9fet.jpg (http://s020.radikal.ru/i720/1510/36/a4fc890dc9fe.jpg)

Примерный вид платы расширения HEPTAGON с розетками DIN-64.

На конце платы расширения оставить краевой разъем с вырезом как на оригинальном ZX Spectrum:
http://s020.radikal.ru/i713/1510/e7/9501e70bca89t.jpg (http://s020.radikal.ru/i713/1510/e7/9501e70bca89.jpg)

zx-kit
18.10.2015, 19:39
http://s011.radikal.ru/i316/1510/f0/6893646a47d3t.jpg (http://s011.radikal.ru/i316/1510/f0/6893646a47d3.png)

zx-kit
20.01.2017, 05:32
Желательно предусмотреть установку материнской платы в корпус ATX. В плате предусмотреть отверстия для крепления в корпус ATX.

На плате питания установить микроконтроллер AVR, разъем питания ATX, разъем для кнопки включения без фиксации с корпуса ATX. При кратковременном нажатии кнопки AVR включит блок питания ATX. При нажатии и удержании в течение 4 сек - выключит.

При подключении к другим блокам питания нужна другая плата питания с разъемом для внешнего блока питания +5V. С помощью аналогового или импульсного стабилизатора формировать +3V3. С платы питания напряжения +5V и +3V3 подавать на материнскую плату через разъем WF-09MR.

Таким образом, на модулях не надо ставить стибилизаторы +3V3 и буферы LVC245 для согласования трехвольтовых микросхем с шиной. Буферы будут общие на материнской плате.

В шину ZST-BUS можно добавить сигналы для вывода на монитор с контроллеров на модулях.

ZX-EDGE можно использовать для платы расширения памяти в адресах ПЗУ. Ее можно будет подключаться к ZX Spectrum или к плате расширения. На плате можно разместить 1 М SRAM и разъем для FLASH-картриджа на 10 образов SNA-48 или одну новую игру размером 512К. Можно сделать сначала картридж без SRAM с микросхемой FLASH 512K прямо на плате со слотом для подключения к краевому разъему.

creator
20.01.2017, 18:32
Предусмотри.

Установи.

Сформируй. Подавай.

Не ставь.

Добавь.

Используй. Подключайся. Размести. Сделай.

widgetii
10.07.2017, 09:54
Вадим,

а Вы не думали взять уже готовый стандарт EuroBus https://retrobrewcomputers.org/doku.php?id=boards:ecb:backplane-8:start ? Идеи шины, разъемы, примерно такие же как у Вас, но я так понимаю, что поддерживается несколько архитектур - получается настоящий конструктор: какой процессор хочешь, такой и ставь

zx-kit
27.01.2018, 13:06
...Затем Lethargeek, Vladimir Kladov и др. (специалисты по видеоконтроллерам) разрабатывают плату дополнительного ОЗУ и видеоконтроллера с количеством цветов 16/256 на точку, отдельным ОЗУ и т.д. Плата будет состоять из ОЗУ и ПЛИС.

Почти угадал.

zx-kit
09.10.2019, 05:10
Настало время очередного витка эволюции в концепции модульного компьютеростроения. Так как сейчас я проектирую печатные платы для нескольких проектов видеоконвертеров, то почему бы не начать реализовывать свои другие проекты. Меня периодически спрашивают, как расширить память 48 К компьютера до 128 К, подключить музыкальный сопроцессор и дисковод. Например, для компьютера LENINGRAD-2012.

Почему бы не сделать систему расширения возможностей более универсальной - всех компьютеров типа Ленинград ? При этом желательно использовать модульную конструкцию. Модульная конструкция дрогая, но возможно кому-то она больше подойдет. И разрабатывать модули расширения можно будет постепенно. Один из вариантов может быть при подключении новых плат к старому компьютеру через панельку Z80. При этом Z80 переставляется на ПЛАТУ ПРОЦЕССОРА. Плата процессора устанавливается в КРОСС-ПЛАТУ. В кросс-плату устанавливаются модули для расширения возможностей старого компьютера.

Модули:

1. Плата процессора.
2. Плата ОЗУ.
3. Плата ПЗУ.
4. Коммутатор памяти.
5. Аудио.
6. Дисковод.
7. Палитра.
8.
9.
10.

bigral
09.10.2019, 11:18
Почему бы не сделать систему расширения возможностей более универсальной - всех компьютеров типа Ленинград ?

Никакого модуля из типичного советского клона типа ленинград не выйдет, оно изначально сделанно как минимально-возжможный домашний аппарат для нищеброда. Компы с системным разьемом типа ленинград-2, львов, profi, орель это уже считался ЖИР для тех у кого денег еще и на дисковод хватает (ато и на принтер!). Расширение таких компов до 128к это моток мгтф потому что сама архитектура 128-го такова (это совсем не тоже самое что модуль расширения памяти для ПОИСК-1).

Но само желание работать в этом направлении понятно - у народа есть пачка 48-х ленинградов, надо их осчастливить платами расширения, ну и да такие платы нужны (128к + ay + divide все на одной плате которая вставляется в сокет процессора + режутся дороги на основной плате и кидается несколько проводов туда же напрямую). Думаю такой универсальный модуль создать можно со схемами подключения его к многим если не всем 48к клонам.

Что касается чисто модульного компа, тут ZX никак не такой (к счастью или сожалению). Он как и atari 800, commodore VIC20/C64, amstrad представляет собой видеоконтроллер со встроенным процессором и другой периферией а не "корзину" с модулями проца, видео и периферии. НО есть же много других: MSX, RC2014, N8VEM, S100 и т.д. и для них давно есть корзины и платы, дорабатывай и производи.

zx-kit
10.10.2019, 03:24
Никакого модуля из типичного советского клона типа ленинград не выйдет


Но само желание работать в этом направлении понятно - у народа есть пачка 48-х ленинградов, надо их осчастливить платами расширения, ну и да такие платы нужны (128к + ay + divide все на одной плате которая вставляется в сокет процессора + режутся дороги на основной плате и кидается несколько проводов туда же напрямую). Думаю такой универсальный модуль создать можно со схемами подключения его к многим если не всем 48к клонам.
Одним нужно divide/divmmc/speccy2007, другим - дисковод. Если будет модульный компьютер - можно будет выбрать устройство для загрузки игр и напащивать возможности компьютера дальше базового варианта 128К. Например, добавить порты для управления каким-нибудь механизмом или палитру 4->15 бит для перекрашивания игр. Если на шину вывести сигналы номера страницы памяти и номера устройства памяти, то можно будет память сделать стандартную 128 К или 1 М по выбору и управлять памятью с другого модуля через шину. Разные контроллеры будут переключать по стандартам Pentagon-1024/KAY-1024/ATM-1024/PHOENIX-1024/SCORPION-1024 и т.д.

Что касается чисто модульного компа, тут ZX никак не такой (к счастью или сожалению). Он как и atari 800, commodore VIC20/C64, amstrad представляет собой видеоконтроллер со встроенным процессором и другой периферией а не "корзину" с модулями проца, видео и периферии. НО есть же много других: MSX, RC2014, N8VEM, S100 и т.д. и для них давно есть корзины и платы, дорабатывай и производи.
При расширении памяти внутреннее ОЗУ 48К надо перевести в режим тользо записи. Тогда Ленинград будет работать в режиме видеокарты.

zx-kit
13.10.2019, 19:52
Никакого модуля из типичного советского клона типа ленинград не выйдет, оно изначально сделанно как минимально-возжможный домашний аппарат для нищеброда...
Но само желание работать в этом направлении понятно - у народа есть пачка 48-х ленинградов, надо их осчастливить платами расширения, ну и да такие платы нужны (128к + ay + divide все на одной плате которая вставляется в сокет процессора + режутся дороги на основной плате и кидается несколько проводов туда же напрямую). Думаю такой универсальный модуль создать можно со схемами подключения его к многим если не всем 48к клонам.

Да, ты прав, лучше одноплатный вариант расширения 128К+AY+TR-DOS с установкой вторым этажом в панельку Z80.

r3d
13.10.2019, 20:19
лучше одноплатный вариант
10 лет жизни!!

zx-kit
22.11.2019, 04:42
Как сделаю плату расширения для Ленинграда и новый видеоконвертер с символьным экраном, можно будет подумать, как лучше и для чего использовать модульную конструкцию.

Но это будет очень дорого. Дороже, чем девборда на одной FPGA.

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

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

zx-kit
29.12.2019, 16:18
Макет кроссплаты модульного компьютера "SPACE MISSION 2020":

https://pic.maxiol.com/thumbs2/1577625334.628204558.img20191229181353.jpg (https://pic.maxiol.com/?v=1577625334.628204558.img20191229181353.jpg&dp=2)

goodboy
29.12.2019, 16:58
https://rc2014.co.uk
посмотри, может почерпнёшь что-нибудь полезное
https://rc2014.co.uk/wp-content/uploads/2014/10/DSCN2553-300x183.jpg

bigral
07.01.2020, 14:49
двухрядный разъем ХУЖЕ трехрядного, а трехрядную корзину уже сделал OrionExt для MSX (который как раз намного легче чем speccy разбивается на модули, по крайней мере можно заменить видеоадаптер на ряд совместимых tms9918, v9938, v9958), советую использовать такую же самую корзину причем расположение большенства сигналов сохранить чтобы народ не спалил платы при случайном включении платы от MSX в корзину с процессорной платой ZX, и наверно можно сочинить универсалыный процессорный модуль который будет и в MSX и в ZX работать (и в других компах на Z80)

zx-kit
07.01.2020, 15:42
Посмотрим. Продолжение про кросс-плату в новой теме SM-2020 (https://zx-pk.ru/threads/31210-modulnyj-kompyuter-quot-space-mission-2020-quot.html?highlight=).