Войти
ФлеймФорумЖелезо

ZX Spectrum Next (17 стр)

Страницы: 116 17 18 1922 Следующая »
#240
(Правка: 15:09) 15:07, 16 сен. 2020

Zefick
> Представь если к новому X-Box потребовалось бы докупать RTX 3080 чтобы он
> работал.

Ну к новому Pentium же нужно покупать RTX чтобы он работал.
От встроенной графики ни там ни там никто чудес не ждёт.
ZX Spectrum Next это всё-таки системник ПК, а не консоль.


#241
(Правка: 6:04) 5:01, 17 сен. 2020

Вчера вечер провёл читая разрозненные куски документации к ZX Spectrum Next и обзорно вник в его архитектуру.

Эти выжимки сейчас можно воспринимать как (черновик) продолжения статьи "Программно-аппаратные расширения ZX Spectrum".
Особенно полезно вспомнить что конкретно написано про ZX Spectrum +2/+3.

Первое что можно заметить - штатный режим работы ZX Spectrum Next является довольно таки прямым усовершенствованием и расширением как раз ZX Spectrum +3!
Базовая конфигурация памяти поддерживается именно в таком же состоянии.
Так выбранная 16Кб-ая страница ROM (одна из четырёх) в первой четверти адресного пространства контролируется двумя битами сразу в двух портах: $7FFD (из ZX Spectrum 128) и $1FFD (из ZX Spectrum +2/+3).
А банк RAM в последних 16Кб памяти контролируется тремя битами в порте $7FFD, что даёт собственно 128Кб ОЗУ в базовых моделях 128/+2/+3. Но в ZX Next памяти много больше, поэтому тут вступает в роль еще порт $DFFD чтобы дать 4 дополнительных верхних бита банка RAM, так что получается 7 бит на выбор кусками по 16Кб, т.е. потолок ZX Next - 2Мб RAM.
Однако за счёт того, что 256Кб отдано под системные ROM/RAM реальное количество свободного RAM: 768Кб в базовой модели и 1792Кб на расширенной.
Тут можно заметить, что записи в порты $7FFD и $1FFD по соглашению в моделях ZX 128/+2/+3 должны дублироваться записями в ячейки памяти системных переменных BASIC, чтобы ROM бейсика и +3DOS понимали где они находятся и что происходит (эти порты ввода-вывода нельзя считывать, поэтому только так). Но записи в расширенный порт $DFFD в +3DOS остаются неизвестными, поэтому сей порт надо обнулить при вызове функций +3DOS.

Сам +3DOS в составе ZX Next существенно усилен тем, что понимает SD-карты и в этом смысле он полностью проапгрейжен - все команды бейсика, всё штатно понимает флешки как диски, умеет RAM-disk и всё остальное из +3DOS. Опять таки насколько я понял полностью реализовывать работу с флешками создатели ZX Next не стали, а позаимствовали прям жирными кусками другой популярный и тоже всё еще находящийся в развитии проект - DivMMC.

Как я понял DivMMC - это другой более ранний проект по девайсу втыкаемому в слот расширения спектрумов чтобы грузить с флешки с FAT16/32. Судя по всему оно расширяет возможности спектрума похоже на то как это делает ZX Interface 1 из статьи выше - т.е. перехватывает в ПЗУ вызов RST 8 и анализируя что туда пришло может подсунуть свою ПЗУ в нижние 16Кб адресного пространства спектрума и выполнить свои функции вернувшись потом обратно как ни в чём не бывало.

В качестве софта контролирующего дисковые операции здесь служит проект "esxDOS". EsxDOS тоже бесшовно интегрируется в бейсик (судя по всему как раз через то же самое RST 8), может подхватывать с флешки образы кассет (.tap) и еще обладает интересным механизмом - вызовом внешних команд располагающихся на флешке так как мы привыкли во всех ОС командной строки.
Но здесь это отдельный механизм называемый "точечные команды" - "dot commands / .commands". Это опять таки если в бейсике начать писать команду с точки, то она подгрузится с диска, исполнится и управление вернётся в текущую программу/бейсик.
Размер исполняемого файла точечных команд не может превышать 8Кб. Казалось бы странное ограничение, но оно целиком лежит в духе этой самой концепции - дело в том, что .commands грузятся не в ОЗУ спектрума (оно ведь занято программой!), а в ОЗУ DivMMC! А и ПЗУ и ОЗУ DivMMC как мы понимаем маппятся на первые 16Кб адресного пространства спектрума - там где обычно лежит ПЗУ.
При этом из точечной команды можно выполнять вызовы DivMMC, т.е. esxDOS, но вот похоже что вызвать другую точечную команду уже не получится - место под неё уже занято.

Таким образом штатный режим ZX Spectrum Next который еще называется NextOS это по сути расширение режима +3DOS из ZX Spectrum +3 спряжённого с кусками DivMMC/esxDOS (при этом замечается, что можно протащить в Next полностью аутентичный esxDOS подсунув опять таки куда надо образ его ПЗУ и настроив на загрузку вместо NextOS как надо).
Например в NextBasic можно фигачить точечные команды написав точку, потом имя команды и далее через пробел параметры и они спокойно выполнятся - только в NextOS на флешке точечные команды по умолчанию лежат в папке /DOT, а в фирменном esxDOS в папке /BIN если не ошибаюсь. Но не суть.

В связи со всем вышеозвученным программисту на ассемблере под Next доступно сразу два варианта как можно работать с флешкой/образами дисков на ней: через старый интерфейс +3DOS и через новый интерфейс esxDOS. Так я наткнулся на обстоятельный документ двухгодичной давности, где подробно в меру сил описаны оба варианта: https://raw.githubusercontent.com/z88dk/techdocs/master/targets/z… tzxos_api.pdf

Штатный интерфейс +3DOS для программиста штука не очень неудобная - во первых концепции +3DOS зиждятся в 80-х и это нечто типа FILE CONTROL BLOCKS (от 0 до 15) из первых версий MS DOS.
Однако с точки зрения функционала это самая естественная для NextOS штука реализующая все возможности типа RamDisk и работы с образами +3DOS и чего то типа такого.

Чтобы вызывать функцию +3DOS программно надо сперва привести конфигурацию выбранных страниц ПЗУ и ОЗУ в нужное состояние и потом вызывать конкретные адреса в ПЗУ инструкцией CALL address, т.е. функции API по старинке намертво прибиты к конкретным адресам в ПЗУ.

Интерфейс к esxDOS может и не реализует все возможности NextOS по работе со всеми контейнерами и носителями (хотя возможно эта информация опять таки стремительно устаревает), но проще в применении и привычнее современному программисту. По сути это очень похоже на POSIX в духе fopen/fread/fwrite/fclose с хендлами файлов и немного прилизано под специфичный ABI (механизм вызова функций ОС из программы).
Точкой входа является штатный обработчик ошибок BASIC 48, т.е. программное прерывание инструкцией RST 8 на который навешали новых "кодов ошибок" которые уже тут служат точками входа.
Так, например, чтобы вызывать функцию открытия файла надо заполнить в регистрах параметры и вызвать:

    RST 8 ; Прыгаем в обработчик ошибок BASIC
    DB $9A ; Байт-селектор вызываемой функции (в штатном бейсике это был код ошибки)
    ; Возврат произойдёт на инструкцию ниже
Если судить по документации, то для вызова функций esxDOS достаточно обеспечить чтобы в нижних 16Кб адресного пространства находился ПЗУ Basic 48, что является штатным состоянием после запуска программы на всех моделях.

Портов ввода-вывода у ZX Spectrum Next очень много. Первая часть из них - "прямая" и как правило поддерживает совместимость с прошлыми моделями и зоопарком устройств для них.
Но гораздо больше новых портов ввода-вывода которые замаплены на "прямые" порты следующим образом.
Запись в порт $243B выбирает номер порта (Next Register).
Далее чтение/запись из/в порт $253B осуществляет доступ.
Читать можно только через эти селекторы, для записи же в новых инструкциях ZX Next есть пара новых сокращающих и время доступа и писанину в ассемблере (инструкции nextreg num8, data8 и nextreg num8, A).
Через эти порты проводятся дальнейшие расширения платформы - так, например, штатных регистров ZX +2/+3 уже не хватает чтобы выбирать все нужные страницы ПЗУ, сделать это можно через Next Register.
Кроме того наиболее гибкий режим страничной адресации разбивает всё адресное пространство ZX Next на восемь страниц по 8Кб каждую из которых можно независимо маппить на страницы ОЗУ записью в 8 регистров Next $50-57 (опять таки 256 значений * 8Кб = 2Мб предела). Конечно опять таки перед вызовом функций NextOS/esxDOS нужно восстановить маппинг ПЗУ на первые две из этих страниц - это делается записью в их селекторы значения $FF.

Хочется при этом всём еще заметить, что тот же esxDOS настолько в развитии находится, что у него вообще нет официальной документации пока еще, только обрывочные и компилируемые сведения, так что реализация esxDOS в Next на сегодняшний день может через год оказаться не просто устаревшей, но вообще неверной в каких то деталях. В общем на обоих фронтах работа кипит не прекращаясь в режиме нон-стоп. :)

#242
(Правка: 6:59) 6:57, 17 сен. 2020

Ну да, набросал свою теперь первую программу для esxDOS/NextOS и пашет:

+ Показать

Что забавно - эмулятор CSpect2 когда его запускаешь в режиме, что sd-карта - это текущий (или любой другой) каталог винды, то функции esxDOS полностью сохраняются и файл создаётся даже в винде в текущей папке если опция эмулятору дана -sd=./
Однако как я понял самой полноценной системе давать такой путь нельзя, т.к. она будет пытаться читать на низком уровне секторы диска и в таком режиме это уже просто невозможно, будет сбой.
Но высокоуровневые функции esxDOS вполне себе пробрасываются в обычную ФС с нужным ключиком. Это отлично для тестов.

#243
11:31, 17 сен. 2020

А вот и мультиколоры на NEXT'е

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#244
(Правка: 15:11) 14:52, 17 сен. 2020

0iStalker

Забавно. Но слой ULA в Next по идее отойдёт на роль самого заднего самого слабодвигающегося слоя с минимально цветным изображением чтобы в клэшинг уложится.
Эдакий декор самого заднего плана типа дымки над закатным солнцем.
И насколько я понял у него тоже есть регистры скроллинга (!), а значит данные трюки особо нужны не будут.
Но вот если этот DMA сгодится как блиттера в Layer 2, где байт на пиксель - тут выгода может быть весомой.

P.S.
Лол, кстати да - попробовал и ULA скроллится на раз-два-три. Вообще никаких проблем, пишешь байт в порт ввода-вывода и всё плавно плывёт в любом направлении.
Причём они как я понял сделали еще концепцию окон - чтобы можно было скрыть произвольные края чтобы в невидимых областях производить бесшовное обновление прокручиваемого содержимого.
Тоже полезно для полноценного графония в стиле 2D.

Вообще тут Next конечно будет сочетать такое что я раньше не видел в сочетании.
С одной стороны тайловый фон где замощение в клетку само собой стимулируется и ускорено, с другой стороны честный битмап 256x192x8bpp, с другой стороны куцый слой ULA где монохром раскрашен по знакоместам - и всё это можно независимо скроллить и накладывать друг на друга. Забавно, забавно...

#245
(Правка: 13:06) 13:02, 18 сен. 2020

Забавно, что на https://aliexpress.ru
ZX Spectrum только в виде рисунка на футболках, хотя по запросу даётся ещё несколько вариантов поисковой подсказки.

P.S. т.е. ниша полностью свободна для китайских ZX Spectrum Next. :)

Думаю, что Next ещё именно интересен своей поддержкой и других ретро компьютеров и часть купила их из-за этой фичи и "может" захотит перенести/запустить какие то свои стародавние разработки под платформой.

#246
(Правка: 18:02) 18:00, 18 сен. 2020

KPG

Кстати заметил, что на официальном сайте в блогах в ветке "software" у них последние две статьи - про Forth :)

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

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

При этом понятно, что в силу атрибутов 8x8 слоя ULA чтобы создать иллюзию бесшовного скроллинга заднего фона надо применить функцию "окна" - когда обрезается вывод допустим вертикальной полоски из 8 левых столбцов пикселей. Тогда в момент когда скрытое в этом столбце изображение выскроллится на видное место нужно за 1 раз обновить все байты изображения и знакоместа в этой колонке. Побайтовое обновление вместо побитовых наложений с прозрачностью когда обновляется один только столбец пикселей быстрее, а с функцией pixelad так и тривиальнее, а так же задача была в том чтобы скрыть обновление столбца знакомест.
Тут всё это становится реальным даже наверное на обычной частоте в 3.5 МГц.
Таким образом слой ULA более чем стоит рассматривать в роли третьего слоя задних фонов в котором картинку надо организовать познакоместно, а то что художники могут искусно это сделать с отличным качеством итога несмотря на всего 2 цвета в знакоместе мы уже знаем:
Изображение
В данном случае на базовых спектрумах переходы цветов грубоваты, но оказывается, что на ZX Next слой ULA можно перевести в режим, когда "фиксированные" цвета ULA становятся 32 слотами в общей 256-цветной палитре. (8 цветов на комбинациях битов RGB * бит яркости * 2 цвета фона и чернил). Это технически позволяет рисовать гораздо более сбалансированные по цветам вещи на слое ULA.
Нда уж... Степень улучшения как раскрывается всё эпичнее и эпичнее...

#247
(Правка: 21:43) 20:36, 18 сен. 2020

=A=L=X=
> Кстати заметил, что на официальном сайте в блогах в ветке "software" у них
> последние две статьи - про Forth :)

Форт (Forth) достойный, но мало популярный язык программирования. (по крайней мере, он не плодит лишние глобальные переменные, предпочитая семантику их переводить в выполнение СЛОВА и локального их использования - это немного другой взгляд на концепт локальных переменных чем в классических языках программирования)

Может и Флейм форума Gamedev читают? :)

P.S. Форт даже кто то пытается скрестить с  scratch https://github.com/phouchguk/scratch-forth на Github. :) (какие то  проекты при поиске по слову Forth на Github регулярно обновляются)
Мне было интересней как в проекте TTL компьютера Gigatron применили Форт-подобный язык в качестве системного, а потом была/есть  и тема реализации Форт для данного компьютера на форуме Gigatron проекта.

Интересно, а нашлось бы применение в Next GA144 144-х  асинхронного по всем  ядрам MISC контроллера с эквивалентной частотой переключения ядер ~700МГц. (хорошо бы было увидеть его в дизайне следующего  Next )

#248
3:04, 19 сен. 2020

KPG
> Может и Флейм форума Gamedev читают? :)

Читают, ржут и ещё раз читают! :-)

#249
13:19, 19 сен. 2020

KPG
> Забавно, что на https://aliexpress.ru
> ZX Spectrum только в виде рисунка на футболках, хотя по запросу даётся ещё
> несколько вариантов поисковой подсказки.
>
> P.S. т.е. ниша полностью свободна для китайских ZX Spectrum Next. :)

Наверное ZX Spectrum Next не собирают в Китае, иначе уже были бы клоны на aliexpress.

#250
(Правка: 23:05) 23:03, 2 окт. 2020

Будет забавно, если клонированную плату можно будет купить быстрее и дешевле (примерно 100 EUR), чем неповторимый оригинал c кикстартера - https://twitter.com/manuferhi/status/1287869314238803969 

Изображение

Вот только справится ли автор с количеством заказов (сомнительно, что в день в одни руки можно собрать больше десятка штук).

+ Показать

#251
(Правка: 22:04) 22:03, 11 ноя. 2020

А вот и клонированная плата в продаже, по цене 115 евро... https://ultimatemister.com/product/zx-next-official-clone-board/    правда, уже всё раскупили.  Но можно оставить заявку

#252
2:49, 12 ноя. 2020

KPG
> Интересно, а нашлось бы применение в Next GA144 144-х  асинхронного по всем 
> ядрам MISC контроллера с эквивалентной частотой переключения ядер ~700МГц.
> (хорошо бы было увидеть его в дизайне следующего  Next

Но нафига? Next это такой ретрофутуризм, на тему что бы было, если бы синклер прокачали и сделали конкурентом Амиге/MSX2 в 80х.

#253
12:37, 12 ноя. 2020

nonamezerox
> Но нафига?
я вижу, что вы поинтересовались архитектурными возможностями GA144 и вероятно смогли придумать варианты использования данного кристала в схемотехнике  ZX-NEXT. :)

P.S. Схемотехника оригинального ZX Spectrum была, как минимум, малозатратна по количеству кристалов используемых в ней.

#254
(Правка: 15:24) 15:20, 12 ноя. 2020

KPG

Нет никакого смысла, повторюсь. Каша из топора.

Спектрум - это ретро-артефакт в себе, Спектрум некст - это  художественные фантазии на извечную тему "модернизированного спектрума мечты как если бы его синклер в 80х дальше развивал".

Это, если проводить автомобильную аналогию, что то вроде современного строительства хот-родов. Строим в 2020 карбюраторные тачки как если бы мы на машине времени на 50 лет в прошлое попали.

И приваривать туда моторы и корчеваные кузова от Nissan GTR нулевых годов выпуска идея так себе.

Страницы: 116 17 18 1922 Следующая »
ФлеймФорумЖелезо