Развиваем Балтик

Старый спектрумистский форум

Moderator: Shaos

User avatar
Black_Cat
Doomed
Posts: 548
Joined: 23 Nov 2007 15:53
Location: Saint Petersburg, Russia

Re: Развиваем Балтик

Post by Black_Cat »

Shaos wrote: 05 Nov 2025 08:41
  • DRAM0 - возможность подсунуть его в третье окно нужна для "бескровного" запуска двухромного варианта SE Basic IV с режимом высокго разрешения (правда для этого ещё и режим высокого разрешения будет нужен)
Во-первых, у тебя неправильно назначены страницы. При сбросе в окнах CPU0-3: ROM, RAM5, RAM2, RAM0, а вторая страница видео это RAM7, следовательно в Спеке 64 при юзании #7FFD должны быть именно эти страницы: RAM0, RAM2, RAM5, RAM7. А теперь внимание! Если у RAM5, RAM7 отбросить A16', то.. получаем RAM1, RAM3 - это для понимания схемотехники :)
Shaos wrote: 05 Nov 2025 08:41
  • ISA - ну в первую очередь мне хотелось бы закончить свой Sprinternet и потом наличие ISA-bus позволяет в лёгкую расширять память компьютера (я пробовал на Спринтере карточку EMS на 4MB - всё работало, и таких карточек можно воткнуть несколько!), а также играться со всякими музыкальными чипами без необходимости городить прослойки для безумного "немобаса" типа TurboSound FM и т.д.
Во-вторых, "безумный Немобас" - это шина Z80. Т.е. насамделе дело в другом - в немобасе нет сигналов с #7FFD, и ты решил лепить свою ISA прямо в Спектрум :) . Несмотря на отсутствие в менеджере памяти всех страниц, ставить просто так вместо них ISA нельзя, а механизма переключения ты не представил.
Shaos wrote: 05 Nov 2025 08:41
  • SRAM - это взялось из-за необходимости иметь возможность запускать комп с разными прошивками без помощи программатора - тот же Балтик имеет несколько исторических прошивок, потом на нём можно запускать стандартный 1982 бейсик, исправленный бейсик, бейсик Урал, SE Basic и т.д.
О5 же механизма переключения на срам не представил.
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!". :wink:
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Почему не предоставил? Всё предоставил - ISA подключается и управляется как на Спринтере (за исключением одной ненужной тонкости со спец-номерами страниц), а SRAM просто стоит вместо ROM и заполняется при холодном старте из BOOT ROM (который по совместительству имеет в себе логику видеоконтроллера из двух РТ4-х)…
User avatar
Black_Cat
Doomed
Posts: 548
Joined: 23 Nov 2007 15:53
Location: Saint Petersburg, Russia

Re: Развиваем Балтик

Post by Black_Cat »

Shaos wrote: 05 Nov 2025 12:50 Почему не предоставил? Всё предоставил - ISA подключается и управляется как на Спринтере (за исключением одной ненужной тонкости со спец-номерами страниц)
Ну да, все знают как на Спринтере :)
Shaos wrote: 05 Nov 2025 12:50 SRAM просто стоит вместо ROM и заполняется при холодном старте из BOOT ROM (который по совместительству имеет в себе логику видеоконтроллера из двух РТ4-х)…
Т.е в мониторе в меню есть выбор прошивки? И через какие же порты монитор их выбирает?
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!". :wink:
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Ну как напишем бутлодер так и будет выбирать :)

У меня три идеи:
1) SPI ERPROM
2) SD-card
3) HTTP

Выбор заключается в скачивании и записи выбранных файлов в SRAM из расширенных режимов (в стандартных режимах запись в SRAM будет заблокирована).

P.S. Точнее выбирать будет программка «вслепую» скопировавшая себя из бутлоадера в ОЗУ и которая например будет использовать экран в #E000 как балтиковский спм (а это расширенный режим при котором будет разрешена запись в срам)…
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Shaos wrote: 05 Nov 2025 00:17 Ради экономии можно подмухлевать только со старшими битами адреса ПЗУ (инвертировать A14, A13, A12 заодно переставив A14 и A12 местами), чтобы последние в половинках 4-килобайтные неиспользуемые куски ПЗУ выстроились друг за другом в начале адресного пространства (и оттуда они уже могут брать данные из двух других частично свободных сегментов):

Code: Select all

000 -> 111 (screen descriptors 312/1)
001 -> 011 (screen descriptors 312/2)
010 -> 101 (partial screen descriptors 312/3 - 55% free)
011 -> 001 (100% free to use 1)
100 -> 110 (screen descriptors 262/1)
101 -> 010 (screen descriptors 262/2)
110 -> 100 (partial screen descriptors 262/3 - 93% free)
111 -> 000 (100% free to use 0)
После отработки бутлоадера (передача управления в старшую половину адресного пространства) железо переключится в нормальную работу с включёнными видео и далее уже все остальные загрузки могут осуществляться с включённой графикой (даже можно предлагать пользователю меню на выбор что грузить, если на SD-карточке не нашлось прошивок со спец.именами типа AUTOEXE0.ROM и AUTOEXE1.ROM)...
А можно инвертировать только A13 и A12, переставляя всё те же A14 и A12 местами:

Code: Select all

000 -> 011 -> 110 (screen descriptors 312/1)
001 -> 010 -> 010 (screen descriptors 312/2)
010 -> 001 -> 100 (partial screen descriptors 312/3 - 55% free)
011 -> 000 -> 000 (100% free to use 0)
100 -> 111 -> 111 (screen descriptors 262/1)
101 -> 110 -> 011 (screen descriptors 262/2)
110 -> 101 -> 101 (partial screen descriptors 262/3 - 93% free)
111 -> 100 -> 001 (100% free to use 1)
И в адресном пространстве процессора при холодном старте оно будет выглядеть следующим образом:

Code: Select all

#0000..#0FFF -> 011 (100% free to use 0)
#1000..#1FFF -> 111 (100% free to use 1)
#2000..#2FFF -> 001 (screen descriptors 312/2)
#3000..#3FFF -> 101 (screen descriptors 262/2)
#4000..#4FFF -> 010 (partial screen descriptors 312/3 - 55% free)
#5000..#5FFF -> 110 (partial screen descriptors 262/3 - 93% free)
#6000..#6FFF -> 000 (screen descriptors 312/1)
#7000..#7FFF -> 100 (screen descriptors 262/1)
#8000..#BFFF -> DRAM2 (16KB)
#C000..#FFFF -> DRAM3 (16KB)
Программа-загрузчик вызванная по адресу #0000 будет копировать (разжимая?) программу бутлоадера в DRAM2/DRAM3 и после передачи управления туда BOOT ROM будет убран из адресного пространства (при M1 когда A15 стал 1) и видеоконтроллер начнёт нормальную работу, используя это ПЗУ в качестве замены РТ4х - далее бутлоадер может установить режим с видеобуфером в #E000 либо #8000 с мультиколором (расширенный режим с D2=1 разрешит запись в SRAM) и либо сразу загрузит прошивки в половинки 32-килобайтного SRAM, либо будет показывать меню начальной загрузки для того, чтобы пользователь выбрал чего он собственно хочет...
hobgoblin
Junior
Posts: 5
Joined: 04 Nov 2025 03:43

Re: Развиваем Балтик

Post by hobgoblin »

вырисовывается применение Pi Pico
в ней все - включая ula+
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Не - никаких короткоживущих техноигрушек :)

Они дольше пары-тройки лет не живут, а я хочу чтобы этот дизайн и ещё через 37 лет (именно столько прошло с момента разработки оригинального Балтика) был употребим и повторяем 8)

P.S. Я знаю как сделать ULA+ на рассыпухе :mrgreen:
(ну почти - ещё будет нужен пик с режимом параллельного порта)
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Идея в порядке бреда :mrgreen:

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

Image

Например 4-цветный режим 256x192 с палитрой аля CGA Palette 1:
AlleyCat-256x192-double.png
Или 16-цветный режим 128x192:
128x192-16col.png
Который путём мерцания гигаскрином можно превратить в 128x384 :P
128x384-16col.png
Хотя для мерцания гигаскрином нужен будет второй такой же экран, а я планировал режимы "сбоку" только на Timex hi-color насаживать у которого всегда только один экран...
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

4-цветный режим с CGA-палитрой можно типа как 4 градации серого представить ;)
256x192-4col-direct.png
И даже с дизерингом ;)
256x192-4col.png
Хотя конечно классический Флойд-Стейнберг будет повеселее :lol:
256x192-4col-floyd.png
Он даже каким-то образом создал тут иллюзию зелёного - надо попробовать с красным так же сделать :mrgreen:
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Не - в палитре 1 с красным такой фокус не проходит:
Coke-256x192-4col.png
Однако если взять чёрно-красно-зелёно-белую палитру, то вроде и ничё выходит :mrgreen:
Coke-256x192-red-green-white.png
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

А вот чёрно-циано-красно-белая палитра (aka CGA Palette 2) вроде может и траву, и небо передавать:
Coke-256x192-4col2.png
256x192-4col2.png
И стереокартинки для красно-циановых анаглифных очков так можно делать :eugeek:
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Для включения этого режима "сбоку" можно воспользоваться таймексовским портом #FF записывая туда 3 (в Timex такого режима нет) - в этом случае железо балтика настроится на таймексовский мультиколор (я чуть раньше описывал как), но на мультиплексоры цветов будут подаваться не цвета атрибутов, а выход некой логической схемы (скорее всего придётся затолкать её в дополнительную 22V10), которая может реализовывать палитру, управляемую битами D5-D4-D3 порта #FF (которые в таймексе используются для задания цвета в режиме высокого разрешения, которого у нас пока нет) - D5 будет отвечать за цвет 3 (0-White, 1-Yellow), D4 - за цвет 2 (0-Magenta, 1-Red), D3 - за цвет 1 (0-Cyan, 1-Green), а цвет 0 у нас всегда будет Black:

000 -> Black, Cyan, Magenta, White (CGA Palette 1)
001 -> Black, Green, Magenta, White
010 -> Black, Cyan, Red, White (CGA Palette 2)
011 -> Black, Green, Red, White
100 -> Black, Cyan, Magenta, Yellow
101 -> Black, Green, Magenta, Yellow
110 -> Black, Cyan, Red, Yellow
111 -> Black, Green, Red, Yellow (CGA Palette 0)

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

P.S. Хотя конечно CGA Palette 0 выглядит несколько безумно:
256x192-4col0.png
P.P.S. С другой стороны наверное можно попробовать и на рассыпухе эту палитру сделать, т.к. тут явно есть закономерность:

Code: Select all

        0 value        1 value
   (0)  Black   [000]  Black  [000]
D3 (1)  Cyan    [101]  Green  [100]
D4 (2)  Magenta [011]  Red    [010]
D5 (3)  White   [111]  Yellow [110]
Если это не цвет 0, то значение бита в палитре задаёт инвертированный младший бит цвета. По идее можно переставить цвета так, чтобы старшие 2 бита цвета были равны номеру цвета в палитре, а бит из палитры непосредственно определял бы младший бит цвета (если это не цвет 0), но тогда палитрой по умолчанию станет Black-Red-Green-Yellow, хотя когда мы задаём режим 3 в порту #FF, то мы тут же и палитру можем задать какую хочется...
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

Поглядим на схему формирования цвета в Балтике:
Screenshot from 2025-11-06 23-43-25.png
Для наших целей можно воспользоваться четвёртой неиспользуемой комбинацией на мультиплексорах DD36 и DD30 - туда надо будет подать повышенную яркость (всегда), новый зелёный, новый красный и новый синий (эти же цветовые составляющие можно будет зареюзать для будущего режима Timex hi-res). Цвет каждого пиксела из восьми в этом режиме определяется двумя битами - младший бит берётся из регистра атрибутов DD10, а старший бит из регистра пикселов DD12. Скажем если мы поставим ещё 2 мультиплексора типа DD19, то они смогут получить пару битов в нужном такте из этих 16, и эта пара битов затем просто пойдёт на DD36 и DD30 как 2 старших бита цвета (новый зелёный GN и новый красный RN), а младший бит цвета (новый синий BN) будет браться из соответствующего бита порта #FF в зависимости от значения той пары битов, т.е. нужен будет ещё и мультиплексор 4:1 (для нулевого цвета оно всегда будет выдавать 0). Вобщем как-то так...
You do not have the required permissions to view the files attached to this post.
hobgoblin
Junior
Posts: 5
Joined: 04 Nov 2025 03:43

Re: Развиваем Балтик

Post by hobgoblin »

в timex был какойто 16 цветный режим малого разрешения
а вообще идея расширенных цветовых супер
и ula+ на рассыпухе - :obye:
User avatar
Shaos
Admin
Posts: 24502
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Развиваем Балтик

Post by Shaos »

hobgoblin wrote: 07 Nov 2025 01:00 в timex был какойто 16 цветный режим малого разрешения
не - в таймексе небыло
вроде 16 цветов было в Sam Coupé, причём полное разрешение (см. https://en.wikipedia.org/wiki/ZX_Spectrum_graphic_modes)
а 16-цветный режим низкого разрешения вроде уже только на современных западных FPGA клонах появился (см. Radastan там же)