PDA

Просмотр полной версии : Компьютер "Океан-240"



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

tnt23
24.12.2018, 10:58
...и вывод на принтер :-O

Причем на принтер выводятся последовательности вида

1B 5A 02
1B 58 00 00
1B 58
1B 4F

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

ESC Z n1 n2 Выбор графического режима с учетверенной плотностью

1Bh 5Ah n1 n2
Epson, IBM

Команда устанавливает графический 8-битовый режим учетверенной
плотности. Общее количество столбцов в графической строке при этом
составит n1 + (n2 * 256).

svofski
24.12.2018, 11:11
или простихосподи графопостроитель?

tnt23, давай подключим к нему Моторий!

tnt23
24.12.2018, 11:27
tnt23, давай подключим к нему Моторий!

А у Мотория порт разве параллелий, не сериалий?

svofski
24.12.2018, 13:59
А у Мотория порт разве параллелий, не сериалий?
Сериалий, конечно. У Океана же есть сериалий. В принципе к Моторию можно любой адаптер сделать. Нативно он USB через FT232, причем с RTS/CTS.

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

tnt23
24.12.2018, 14:32
Сериалий, конечно. У Океана же есть сериалий. В принципе к Моторию можно любой адаптер сделать. Нативно он USB через FT232, причем с RTS/CTS.

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

RS232 вполне годно, только со стороны Океана больше 4800 ожидать не стоит.

svofski
24.12.2018, 14:57
RS232 вполне годно, только со стороны Океана больше 4800 ожидать не стоит.
Моторию даже это слишком быстро, ему ж елозить пером по бумаге. А crtscts Океан умеет? Теоретически можно и xon/xoff, но с ними морока.

tnt23
24.12.2018, 15:06
Штатно от ВВ51 выведен nDSR, в нашей реплике также выведен nDTR. CTS и RTS висят в воздухе.

svofski
24.12.2018, 15:15
CTS и RTS висят в воздухе.
Чего делать с DSR/DTR я не знаю. Но мы что-нибудь придумаем. В общем везу тебе Моторий, он совсем небольшой. Положу под елочку.

tnt23
24.12.2018, 15:36
Чего делать с DSR/DTR я не знаю. Но мы что-нибудь придумаем. В общем везу тебе Моторий, он совсем небольшой. Положу под елочку.

Погоди, я не весь Монитор дизассемблировал еще.

svofski
24.12.2018, 23:42
Ок, прикручу пока колесики для транспортировки.

tnt23
09.01.2019, 16:20
Взять, к примеру, редактор шрифтов ZNG. В нем используется занятный трюк - отключение системного ПЗУ, шуршание в области шрифта, и включение ПЗУ взад.


DI
MVI A,10
OUT 0C1

...

XRA A
OUT 0C1
EI


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

svofski
09.01.2019, 21:10
отключение системного ПЗУ, шуршание в области шрифта, и включение ПЗУ взад
А системное ПЗУ обычно закрывает собой ОЗУ в этих же адресах? Что происходит при записи по этим адресам, когда ПЗУ не отключено?

tnt23
09.01.2019, 22:14
А системное ПЗУ обычно закрывает собой ОЗУ в этих же адресах? Что происходит при записи по этим адресам, когда ПЗУ не отключено?

Когда ПЗУ не отключено, запись в эти адреса просто блокируется. (То ли дело было в спектруме, где при записи в область ПЗУ активировался ~WR для ОЗУ)

tnt23
11.01.2019, 18:09
Спросил у AZMaster, оказалось все просто - отключая ПЗУ, получаем доступ к видео-ОЗУ. В подпрограммах Монитора, естественно, ПЗУ не отключают, а проецируют старшие 32К на младшие (https://zx-pk.ru/threads/14176-kompyuter-quot-okean-240-quot.html?p=987118&viewfull=1#post987118) для тех же целей.

tnt23
15.01.2019, 09:46
b2m, добавь плиз в конфигурацию эмулятора для "Океана" вывод звука:


beep : beep {
input=ppaE0.portC[3]
}

ivagor
03.02.2019, 07:08
Если я правильно понимаю, то три бита "справа от бипера" - это магнитофонный цап. Но его же можно для звука использовать, там нет каких-то неочевидных ограничений?
И смежный вопрос - программы для обмена с магнитофоном в супер-быстром формате не дошли до наших дней? А если дошли, то где на них можно взглянуть?

tnt23
03.02.2019, 10:37
Использовать для звука ЦАП можно, только он не заведен на усилитель динамика (что в общем-то правильно).

Про быстрый формат пока ничего не известно.

ivagor
03.02.2019, 10:51
Использовать для звука ЦАП можно, только он не заведен на усилитель динамика
Т.е. можно подать с магнитофонного выхода океана на звуковой усилитель и слушать.

Вопрос - есть ли памятка по Esc-последовательностям океана? При копании IBASIC составил себе очень краткую по графическим и звуковым, но если уже есть нормальная, то я не хочу дублировать с худшим качеством.

tnt23
03.02.2019, 11:40
Вопрос - есть ли памятка по Esc-последовательностям океана? При копании IBASIC составил себе очень краткую по графическим и звуковым, но если уже есть нормальная, то я не хочу дублировать с худшим качеством.

Все награбленное сваливаю сюда - http://sensi.org/~tnt23/ok240/

ivagor
03.02.2019, 12:31
"Все уже украдено до нас" (с).
Крошечные дополнения/правки, скорее всего связанные с другой версией bios:
Esc '0' XX YY - задание координат для "прецизионного" текстового вывода (SYM в IBASIC)
Esc '3' XX YY - инверсия точки (в IBASIC не используется)
Esc '68' - запрет скролла основной части экрана - в IBASIC GRAF делает Esc '60' (очистка экрана) потом Esc '68'
Esc 'O' (буква, не цифра) высота ('0000'-'FFFF') длительность ('0000'-'FFFF') звука для Esc 7 (BELL в IBASIC) - SOUND в IBASIC. Ячейки 0BFEEh - высота и 0BFF0h - длительность.

- - - Добавлено - - -

В Esc '8' FFF - это скорее палитра, если следовать терминологии emu

tnt23
03.02.2019, 15:10
"Все уже украдено до нас" (с).
Крошечные дополнения/правки, скорее всего связанные с другой версией bios:
Esc '0' XX YY - задание координат для "прецизионного" текстового вывода (SYM в IBASIC)
Esc '3' XX YY - инверсия точки (в IBASIC не используется)
Esc '68' - запрет скролла основной части экрана - в IBASIC GRAF делает Esc '60' (очистка экрана) потом Esc '68'
Esc 'O' (буква, не цифра) высота ('0000'-'FFFF') длительность ('0000'-'FFFF') звука для Esc 7 (BELL в IBASIC) - SOUND в IBASIC. Ячейки 0BFEEh - высота и 0BFF0h - длительность.

- - - Добавлено - - -

В Esc '8' FFF - это скорее палитра, если следовать терминологии emu

Спасибо, добавлю.

Про звук по Esc 'O' (0x1b 0x4F) - параметр длительность, скорее всего, означает "количество колебаний". Я попытался воспользоваться ячейками высоты и длительности для звуков в "Тетрисе" и быстро обнаружил, что чем ниже частота, тем дольше звучит нота.

Про палитру - да, скорее всего так и есть.

ivagor
03.02.2019, 16:17
Про звук по Esc 'O' (0x1b 0x4F) - параметр длительность, скорее всего, означает "количество колебаний".
Фактически да, это типичная "немузыкальная" процедура, которая годится только бипнуть разок. Причем они легко могли сделать ее музыкальной поменяв таймер и счетчик в регистре местами, т.е. чтобы таймер определял общую длительность, а "просто счетчик" - период. Да и вобще, зачем стрелять из пушки по воробьям, можно было для такой задачи и без таймера обойтись (или лучше отдали бы хоть один канал таймера для звука). Может они хотели сделать процедуру, бипающую одинаково, независимо от частоты процессора, но для простого немузыкального звонка/гудка это смешно, тем более океанов с другими тактовыми не существует.

tnt23
03.02.2019, 16:24
В принципе, там есть пользовательский канал таймера, у которого клок, гейт и выход выведены на разъем. Ну да чего уж теперь. Вообще к процедуре Beep есть и другие вопросы:

https://zx-pk.ru/threads/29940-rabochie-yachejki-monitora-240-7.html?p=993999&viewfull=1#post993999


океанов с другими тактовыми не существует

Есть редкоземельный клон "Автограф-01", теоретически.

ivagor
03.02.2019, 18:32
Есть редкоземельный клон "Автограф-01"
Пишут, что там частота 2.4, т.е. совместимость по частоте бипа не пострадала бы при отказе от таймера для процедуры.


В принципе, там есть пользовательский канал таймера, у которого клок, гейт и выход выведены на разъем.
Ну тогда можно считать, что таймером тоже можно издавать звук. В эмуляторе zx для вектора биперный звук надо было снимать с разъема ПУ.


Вообще к процедуре Beep есть и другие вопросы:
На мой взгляд особого вопроса там нет. Они опираются на это значение, чтобы лишний раз не щелкнуть в магнитофонный выход. Хотя грамотнее было воспользоваться регистром управляющего слова ВВ55 и бипать BSRами через E3h, а не Е2h.

- - - Добавлено - - -

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

- - - Добавлено - - -

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

tnt23
03.02.2019, 18:41
лучше ограничиться для звука бипером и магнитофонным цапом

Собственно, это гораздо бОльший челлендж.

ivagor
06.02.2019, 17:48
Конверснул в режим DDp (https://zx-pk.ru/threads/30001-spetsialist-grafika.html?p=996468&viewfull=1#post996468) пару картинок: классических попугаев и исследовательский корабль, раз уж тут океан.
Для удобного запуска в эмуляторе нужно дополнить EMU.ext как написано здесь (https://zx-pk.ru/threads/30052-tetris.html?p=998034&viewfull=1#post998034). После этого можно дропать файлы .ok в окно эмулятора и они запускаются. Но у меня иногда при этом эмулятор вылетает, закономерности не понял. В конфиге с fdd тоже можно запускать, если записать на образ диска и сменить расширение .ok на .com. Для загрузки в реал по последовательному интерфейсу приложены файлы .hex.
Выход из просмотра - нажатие любой клавиши (независимо от конфига).

tnt23
06.02.2019, 19:22
ivagor, круто. Правда, у меня почему-то попугаи расслоились (wine под Ubuntu).

67988

ivagor
06.02.2019, 19:44
Респекты идут DDp за демонстрацию такого режима. Но конвертировал я сам.
Сделал более корректный вариант, заменил архив с картинками.

- - - Добавлено - - -

Теоретически на океане можно показывать такие картинки с разрешением 512x256, но нужно менять палитру каждую строку. В эмуляторе такое не отладить.

tnt23
06.02.2019, 19:50
Сделал более корректный вариант, заменил архив с картинками.

67990



Теоретически на океане можно показывать такие картинки с разрешением 512x256, но нужно менять палитру каждую строку. В эмуляторе такое не отладить.

Готов потестить на реале.

ivagor
06.02.2019, 19:59
Готов потестить на реале.
Совсем вслепую такую программу практически невозможно делать, если только b2m добавит поддержку битов 0 и 1 порта 41h в эмулятор. А ему для этого надо знать, сколько строк в кадре, сколько тактов в строке, где начинаются и кончаются ОХЛ по кадру и строке. Ну и еще, конечно, ему надо захотеть это реализовать.

tnt23
06.02.2019, 20:20
А еще гигаскринить можно. Пора начинать уже писать демо для ЦЦ.

ivagor
23.02.2019, 19:02
Взглянул пзу Ocean-250 с сайта AZmastera и у меня создалось впечатление, что это или шутка/прикол или пзу (очень) плохо считалось. Или это некий набросок, который не работал.

tnt23
23.02.2019, 20:50
Мне тоже так показалось. Но в целом ничего не говорит против версии, что это действительно был вариант "Океана" (часть хотя бы).

ivagor
11.03.2019, 18:47
Пара слов про доступ к дополнительной памяти и про 512 Кб.
Приземленная часть.
Для удобного использования дополнительной памяти нужны 2 основные функции: возможность обмениваться с ней данными и возможность запускать находящийся там код.
ПЗУ океана частично (в пределах 64 Кб допОЗУ) реализует функцию обмена. Сравнительно просто можно расширить доступную память до максимума, вызывая пзушные процедуры с обходом ущербного формирования содержимого порта 0C1h. А вот для запуска кода в допОЗУ штатных возможностей нет.

Дальше фэнтезийная часть. Что могли бы сделать разработчики. Как минимум - разместить в пзу нормальные процедуры обмена и запуска.
Как максимум - разработать удобную систему управления памятью.
Если не сильно отрываться от земли, то они могли сделать очень простую вещь - зафиксировать часть озу 8000-FFFF нулевой страницы и запретить ее переключение. При этом младшими битами порта 0C1h выбиралась бы только страница для диапазона 0000-7FFF. Пользуясь "островом стабильности" 8000-FFFF можно было бы и размещать там любые специализированные процедуры обмена (в т.ч. удобный и быстрый обмен с дополнительной страницей видео), и передавать управление в другие страницы.
Для этого нужно было подавать на КП12 вместо A16-A18 следующие (A16)-(A18):
_A15=not A15
(A16)=A16 and _A15
(A17)=A17 and _A15
(A18)=A18 and _A15
Учитывая, сколько авторы всего наворотили в океане, отсутствие такого или подобного диспетчера можно объяснить скорее непродуманностью, а не желанием упростить схему.

В emu для увеличения памяти до 512 Кб нужно в разделе mem : Memory {
поменять строку
size=20000
на
size=80000

Также прилагаю "фэнтезийный" конфиг, в котором озу переключается только в дипазоне 0000-7FFF. ДОС и монитор реагируют на такое изменение спокойно, т.к. они доступаются к допОЗУ только в этом диапазоне.

tnt23
11.03.2019, 20:27
Про исполнение кода из переключаемых банков в то время вряд ли задумывались, стандарт MSX только-только появился.

Вот еще интересно, как предполагалось использовать управление банками ПЗУ. Тоже вроде бы хороший задел, но никаких следов софта или документации :(

ivagor
11.03.2019, 20:50
Могу отметить положительный момент - пока что вижу, что дос и монитор обращаются к допОЗУ только через стандартные процедуры. А значит в принципе организация памяти может быть практически любая (в разумных пределах), главное чтобы про нее знали процедуры обмена.

Про ПЗУ вижу на схеме, что если не брать в расчет перемычки, то просто можно выбрать одну из 4х страниц пзу. С перемычками все усложняется, не разбирался.

ivagor
13.03.2019, 17:33
Перейду сюда, чтобы не оффтопить в теме про тетрис.

Давай попробую. Вывод на магнитофон у меня точно работает, а ввод не проверял.
Вот wav, который построил emu, который запускал я.
68427

Давай нетленку, потестим на реале.
Нетленку вслепую сделать сложно, пока не могу.

- - - Добавлено - - -

Насчет выгрузки в wav с реала. Если получится загрузить emuшный wav, то лучше такой рам-диск и выгрузить. Если не получится - тогда желательно что-нибудь содержательное все же записать на рам-диск, чтобы не пустота была.

tnt23
13.03.2019, 22:30
Ввести через магнитофонный вход ничего не получается. Подозреваю, что входная схема возбуждается, т.к. в отсутствие входного сигнала на ноге DD78-20 присутствует меандр с частотой 2.5КГц, а на ноге -21 прямоугольный сигнал с заваленным задним фронтом и той же частотой.

ivagor
14.03.2019, 06:53
А что с выгрузкой, или пока не пробовал?

tnt23
14.03.2019, 09:07
А что с выгрузкой, или пока не пробовал?

Вчера выгрузил пустой файл размером 1 блок (в CP/M, командами SAVE 1 POPS и WRITE POPS), но не смог пришпилить полученный WAV по причине большого размера. Сегодня вечером сделаю.

А в чем причина интереса к записи на ленту?

ivagor
14.03.2019, 09:52
tnt23, спасибо, что попробовал. Рам диск с пустым файлом наверно не стоит записывать. Или загрузить в океан через RS-232 какой-нибудь файлик или в мониторе хотя бы пару байт изменить на ненулевые перед сохранением на рам-диск.
Интерес к магнитофонному обмену океана связан с его нестандартностью, b2m для загрузки даже какой-то хитрый фильтр приделал, интересно, как он сработает с реальным wavом.

perestoronin
14.03.2019, 13:47
Ввести через магнитофонный вход ничего не получается.
Даже те номиналы что указаны как исправленные в последующих журналах не верные. Правильные номиналы конденсаторов фильтров в цепях чтения записи на магнитофон придется подбирать опытным путем, кстати и схему узла записи и чтения тоже можно немного доработать. По аналогии с Ленинградом.

tnt23
14.03.2019, 16:58
Правильные номиналы конденсаторов фильтров в цепях чтения записи на магнитофон придется подбирать опытным путем

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

tnt23
14.03.2019, 20:25
Интерес к магнитофонному обмену океана связан с его нестандартностью, b2m для загрузки даже какой-то хитрый фильтр приделал, интересно, как он сработает с реальным wavом.

Вот вчерашний файл (записан из CP/M командой WRITE): http://sensi.org/~tnt23/ok240/pops.wav

ivagor
14.03.2019, 20:55
К сожалению wav с реала в emu не прочитался. Пробовал и левый канал и правый и вместе.
Зато я узнал, что в dos можно грузить отдельные файлы. Тот файл, который я выложил ранее, выгружен из монитора, это рам-диск целиком. Попробовал выгрузить из доса и потом загрузить (тот же IBASIC) - получилось, только странное завершение загрузки, почему-то сам не переходит к приглашению доса, пришлось нажать Ctrl+C. После этого файл запускается с рам диска.

tnt23
14.03.2019, 22:44
почему-то сам не переходит к приглашению доса

Возможно, неточно эмулируется или вообще не поддерживается межблочный промежуток (на ППА для магнитофонного входа есть 2 входа, один для детектора пауз, второй собственно для потока бит).

ivagor
15.03.2019, 06:20
У меня насчет ожидания доса после загрузки файла появилась идея. Появилась она вчера после выключения компа, поэтому на практике я ее пока не проверил. Возможно это сделано для удобства загрузки нескольких файлов подряд, ближе к вечеру проверю.

tnt23
15.03.2019, 12:17
Команда READ в CP/M выходит из ожидания по ESC, кстати.

ivagor
15.03.2019, 17:02
Идея оказалось правильной, дос действительно ждет загрузки следующих файлов. Т.е. можно загрузить несколько файлов подряд, а когда все - пользователь жмет esc или ctrl+c.

tnt23
15.03.2019, 18:48
Вопрос совместимости реала с эмулем по-прежнему открыт? (как минимум в сторону от реала к эмулю, в реал мне не загрузить пока ничего)

ivagor
15.03.2019, 19:05
Вопрос открыт. Если посмотреть на wav с реала, то видны предполагаемые проблемы. После паузы уровень зашкаливает и средняя точка уезжает. Можно попробовать вытащить это обработкой (пока не особо хочу), можно попробовать выключить какую-нибудь примочку на звуковухе (если запись была через микрофонный, то лучше попробовать через линейный, отключить ару, если есть такая возможность, включить фильтрацию DC, если есть такая возможность). Еще один очень специфический вариант - сделать свою выгрузку почти в родном формате, но с дополнительным пилотом в начале, чтобы уровни пришли в чувство (тоже пока не хочу, но если кто сделает, то я только за).

tnt23
15.03.2019, 19:40
Ок, я ленился и писал с реала в микрофонный вход близлежавшего неттопа. Устыдяся, достану с полки Zoom R8 и сделаю студийную запись.

perestoronin
16.03.2019, 13:29
Беда в том, что на выходе первого же каскада имеем устойчивую генерацию
Замыканий нет линий узла чтения на цифровые выходы ? Может вкралась ошибка в разводку ?

Узел чтения может собрать на макетке и отладить отдельно от платы ? Деталей в нем немного.

ОУ какой в узле чтения использован ? Если не тот что по схеме, то потребуется подбор резисторов и довешивание конденсаторов, чтобы убрать паразитную генерацию.

svofski
16.03.2019, 14:45
Ок, я ленился и писал с реала в микрофонный вход близлежавшего неттопа. Устыдяся, достану с полки Zoom R8 и сделаю студийную запись.

Студийному монитору — студийный магнитофон.

tnt23
16.03.2019, 17:48
Замыканий нет линий узла чтения на цифровые выходы ? Может вкралась ошибка в разводку ?

Нужно проверять. Хорошо бы кто-нибудь из коллег уже собрал свою реплику, а то не успеваю все ;)


Узел чтения может собрать на макетке и отладить отдельно от платы ? Деталей в нем немного.

Вот эта мысль меня тоже посещала, но пока не оформилась в действие.


ОУ какой в узле чтения использован ? Если не тот что по схеме, то потребуется подбор резисторов и довешивание конденсаторов, чтобы убрать паразитную генерацию.

Вроде такой же, 544УД2, только не уверен, А или Б.

ivagor
16.03.2019, 18:56
1. Прочитал в МПСиС 1986/4, С. 78, что
"Программы обмена с бытовым магнитофоном, входящие в состав Монитора 240.2, используют два формата записи: стандартный (скорость передачи 500 бод) и высокой плотности записи с фазоимпульсным кодированием (6000 бод)."
Чисто из спортивного интереса - как в мониторе или досе записать (или прочитать) со стандартной скоростью? И где в пзу соответствующие процедуры?

2. В дополнение к теме про регенерацию. После прочтения МПСиС 1986/4, С. 75 у меня создалось впечатление, что в океане, в отличие от вектора, можно абузить скролл для частичного ограничения регенерации. Правда полезных применений у этой возможности не вижу.

tnt23
16.03.2019, 19:10
1. Прочитал в МПСиС 1986/4, С. 78, что
"Программы обмена с бытовым магнитофоном, входящие в состав Монитора 240.2, используют два формата записи: стандартный (скорость передачи 500 бод) и высокой плотности записи с фазоимпульсным кодированием (6000 бод)."
Чисто из спортивного интереса - как в мониторе или досе записать (или прочитать) со стандартной скоростью? И где в пзу соответствующие процедуры?

Эту булочку здесь (чуть ли не в этом самом топике даже) долго и печально жевали. Пришли к выводу, что никакими 6000 бодами в прошивках, которыми мы располагаем, не пахнет, и все, что мы сегодня можем записывать-считывать, является обычным стандартным 500-бодовым писком.

ivagor
16.03.2019, 19:23
Пришли к выводу, что никакими 6000 бодами в прошивках, которыми мы располагаем, не пахнет, и все, что мы сегодня можем записывать-считывать, является обычным стандартным 500-бодовым писком.
Совершенно не согласен.
1. Возьмем для примера выложенный IBASIC из доса. Длительность информационной части там чуть больше 16 секунд, за это время передается 8 килобайт. Средняя скорость более 4000 бит/секунду.
2. Возьмем рам-диск с IBASICом, выгруженный из монитора. Длительность информационной части примерно 97 секунд, 64 килобайта, средняя скорость 5400 бит/секунду. Вероятно скорость здесь выше из-за того, что 5/6 файла, в отличие от п.1. составляют нули.
Полученные средние скорости меньше реальных скоростей передачи, т.к. в файле есть паузы и служебная информация. Вполне верю, что низкоуровневая скорость передачи может достигать и 6000 бит.
А вот как записать или прочитать со скоростью 500 бит/секунду я не знаю.

tnt23
16.03.2019, 22:23
Полученные средние скорости меньше реальных скоростей передачи, т.к. в файле есть паузы и служебная информация. Вполне верю, что низкоуровневая скорость передачи может достигать и 6000 бит.

Минуточку, это все выгрузка, сделанная на эмуляторе? Для чистоты эксперимента мне, видимо, следует взять выложенный IBASIC и сохранить его из доса на реале.

perestoronin
17.03.2019, 19:44
свою реплику
Тоже руки тянутся да грошей нема заказать основные платки.
Если бы кто-то заказал из Китая, я бы себе парочку выкупил (в зеленой маске) в Москве.
Я умею заказывать только в местных лавочках, а в них надо, чтобы видимость приемлемой цены получилась, заказывать столько плат, что с ними потом на барахолке висеть пятилетку или дольше.
Потому я лучше на хвост кому-нибудь более шустрому припаду.
Но только с зеленой маской, а не красной или тем более голубой ) Да и белые и черные тоже ни к чему - на них дорожки плохо просматриваются а на белых и синих канифоль некрасиво смотрится

- - - Добавлено - - -


544УД2, только не уверен, А или Б.
Эти прошиваются статическим электричеством очень легко и склонны к паразитной генерации.

tnt23
18.03.2019, 20:35
ivagor, вот два вава: файл длиной 2560 байт, записанный из CP/M командой WRITE, и весь кваз (подозреваю, что 64Кбайт), выгруженный из Монитора командой W.

1. http://sensi.org/~tnt23/ok240/ok240file.zip
2. http://sensi.org/~tnt23/ok240/ok240disk.zip

Писалось в моно режиме с дискретизацией 44.1КГц, уровень записи был выставлен чуть менее 0дБ.


68498

ivagor
18.03.2019, 21:22
Спасибо за файлы, но я уже когда их посмотрел в audacity, стало понятно, что в emu они не загрузятся. Вероятно это работа АРУ звуковухи. Нерилтаймовый декодер таких файлов умные люди скорее всего сделать могут, а вот чтобы в эмулятор грузить с использованием стандартного софта - это значительно более сложная задача.
Но скорость можно оценить:
ok240file.WAV - примерно 3600 бит/секунду
ok240disk.WAV - примерно 4480 бит/секунду
Это явно не 500 бит/секунду.

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

tnt23
18.03.2019, 21:32
Вряд ли звуковуха (портастудия для записи музыкальных инструментов) имеет какую-то авторегулировку по входу. Так что скорее всего мы имеем почти не искаженную трактом звукозаписи картину вытекающих из Океана магнитоданных.

ivagor
18.03.2019, 21:47
Факт - при записи океан в цифре выдает 3 возможных уровня: "средний", "положительный", "отрицательный". Значит то, что мы видим в wave - это результат работы или тракта воспроизведения океана, или тракта записи звуковухи или их комбинации. Тракт океана без устройства оцифровки проверить не получится, зато (при большом желании) можно проверить тракт записи звуковухи. Или как я предложил в предыдущем посте или даже без океанского сигнала просто подать на звуковуху после молчания сигнал с постоянной амплитудой и посмотреть, как он оцифруется, особенно начало.

ivagor
19.03.2019, 06:33
Прочитал значительную часть этой темы и призадумался. Оказалось, что нет даже единства и согласия насчет уровней, которые выдает океанский магнитофонный цап. Причем разница не только в предполагаемых уровнях, но и в направлении нумерации. Имеет смысл посмотреть амплитудную характеристику этого цапа, для чего можно записать с него пилу.

tnt23
19.03.2019, 08:12
Попробую сначала просто записать прямоугольник на 1 или 10 килогерц.

ivagor
19.03.2019, 18:00
Подумал, что лучше сделать не специализированный генератор пилы, а более общий вариант с возможностью задания произвольного сигнала. Хотя сам использовал на данный момент только тишину и пилу. tnt23, попробуй, если будет время. Исходник с комментариями прилагается. После запуска пауза 2 секунды, потом пила с высокой частотой, потом пауза 1 секунда и т.д. Общее время менее полминуты.

AlexG
19.03.2019, 19:21
Факт - при записи океан в цифре выдает 3 возможных уровня: "средний", "положительный", "отрицательный".

Как вариант ?
https://ru.wikipedia.org/wiki/HDB3

tnt23
19.03.2019, 20:57
ivagor, запись тут: http://sensi.org/~tnt23/ok240/tapdac.zip

На картинке: вверху выход "Океана" после конденсатора (на разъеме), внизу - до конденсатора.

68528

ivagor
19.03.2019, 21:59
"Кто виноват и в чем секрет"
Попробовал отсортировать уровни для реала, но не уверен, что получилось полностью правильно. И еще этот конденсатор.

ivagor
20.03.2019, 06:06
Насчет своеобразного вида сигнала при выгрузке. Основная проблема в том, что пзу считает, что 4 - это "среднее" значение, а 3 и 5 расположены с разных сторон от него (т.е. как в emu), а на реале видим, что 3 и 5 расположены с одной стороны от 4, отсюда дикие скачки в начале и в конце блоков.
Исправить можно или программную часть или аппаратную. Мое личное мнение, что проблема в аппаратной части, т.к. не известен вариант прошивки, который бы правильно с ней работал.

tnt23
20.03.2019, 09:05
Возможные причины:
- неправильно установлены резисторы на плате
- ошибка разводки платы

Проще поиграть резисторами.

- - - Добавлено - - -

В журнальной схеме выходы C0, C1 и С2 ППА DD67, обозначенные как Tape1, Tape2 и Tape3, суммируются на эмиттерном повторителе VT11 с весами 5.1К, 10К и 20К, соответственно.

68534

В схеме реплики все так же. Но есть маленькое отличие в схеме реплики!

В журнальной статье читаем:


Выходной сигнал, подаваемый на линейный вход магнитофона, формируется 3-разрядным ЦАП на резисторах R31, R32, R33 с последующим интегрированием цепью R35, C4.

Смотрим внимательно на фрагмент магнитофонного вывода реплики:

68537

Конденсатор и резистор поменяны местами, в результате вместо интегрирующей цепочки имеем дифференцирующую, отсюда эти дикие всплески на фронтах сигналов. (О номиналах: в журнальном варианте с 10К и 10нФ имеем частоту среза RC цепочки в 1.5КГц)

PS Читаем далее в журнале (ПЭВМ "ОКЕАН 240": КОНСТРУКЦИЯ И МЕТОДИКА ОТЛАДКИ, МПСиС №3, 1987, с.77):


интегрирующая цепь в схеме формирователя выходного сигнала магнитофона заменена дифференцирующей, для чего потребовалось поменять местами элементы R35, C4;

PPS Уже отмечали на форуме, см. https://zx-pk.ru/threads/14176-kompyuter-quot-okean-240-quot.html?p=348728&viewfull=1#post348728

ivagor
20.03.2019, 12:17
"Всплески" имхо плохи не сами по себе, а потому, что вместе с неправильными уровнями они практически делают невозможным чтение начальных бит. Хотя я не могу утверждать, что после замены уровней на правильные (как минимум 4 "в центре", 5 и 3 выше и ниже или наоборот, но не с одной стороны от 4) чтение пойдет. Программно я примерно представляю, как править (поменять 5 и 4 или 3 и 4 местами), а аппаратно - нет. По крайней мере замена местами резисторов для младшего и старшего бита с очень большой вероятностью не поможет, все равно уровни будут не там.

tnt23
20.03.2019, 15:01
"Всплески" имхо плохи не сами по себе, а потому, что вместе с неправильными уровнями они практически делают невозможным чтение начальных бит. Хотя я не могу утверждать, что после замены уровней на правильные (как минимум 4 "в центре", 5 и 3 выше и ниже или наоборот, но не с одной стороны от 4) чтение пойдет. Программно я примерно представляю, как править (поменять 5 и 4 или 3 и 4 местами), а аппаратно - нет. По крайней мере замена местами резисторов для младшего и старшего бита с очень большой вероятностью не поможет, все равно уровни будут не там.

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

tnt23
22.03.2019, 09:30
"Кто виноват и в чем секрет"
Попробовал отсортировать уровни для реала, но не уверен, что получилось полностью правильно. И еще этот конденсатор.

ivagor, я про эту домашку не забыл, через некоторое время к ней вернусь.

ivagor
22.03.2019, 09:37
А я еще один вариант сделаю, там два значения поменяю местами, т.к. насчет них не уверен, в каком порядке идут.

ivagor
22.03.2019, 17:13
Собственно еще один вариант. Надеюсь tapdac2 или tapdac3 выдадут лесенку.

ivagor
27.03.2019, 17:43
Упоминал ранее про межстраничную передачу управления. Сравнительно простой вариант, как это можно сделать. В пзу несколько раз встречается последовательность
OUT 0C1h
RET
В странице, куда будем передавать управление, нужно где-то разместить "диспетчер", в простейшем случае команду pchl и пару байт адреса, который будет указывать на эту команду. Вызывающая процедура должна установить sp на этот указатель и в HL записать желаемый адрес перехода.
Если нужно обеспечить возврат, то дополнительно придется передать адрес возврата в DE или BC. Удобнее (для сохранения) в DE, а B или C можно задействовать для передачи аргумента OUT 0C1h при возврате, чтобы можно было вернуться куда угодно.

В дополнение к фантазиям про улучшение диспетчера памяти. Простая и довольно полезная вещь, которую могли сделать разработчики - включать пзу в адресное пространство только на чтение (как в ПК8000). Тогда, например, при выводе 32 символов в цвете или 64 символов в монохроме можно отказаться от трогания порта 0C1h, т.к. читать из видеопамяти не нужно, а писать можно было бы и "сквозь" пзу.

tnt23
27.03.2019, 18:59
ivagor, непонятно, а где аргумент ддя аккумулятора, который выдается в порт С1?

Про отсутствие режима "только запись" для ПЗУ я тоже недоумевал. Может, идея доступа в теневое ОЗУ, как в спектруме, тогда еще не была популярна.

ivagor
27.03.2019, 19:04
где аргумент ддя аккумулятора, который выдается в порт С1?
Его и адрес перехода (в другой странице) нужно задать перед обращением к пзу.

...
тут могут быть команды определяющие адрес и страницу возврата
...
lxi sp,адрес_адреса_pchl
lxi h, адрес_перехода
mvi a, страница (аргумент out 0C1h)
jmp пзу

tnt23
27.03.2019, 19:39
По поводу чтения из видеопамяти - оно нужно для битовых операций, типа вывода символов шириной менее 8 бит, или вывода спрайтов.

- - - Добавлено - - -


Его и адрес перехода (в другой странице) нужно задать перед обращением к пзу.

...
тут могут быть команды определяющие адрес и страницу возврата
...
lxi sp,адрес_адреса_pchl
lxi h, адрес_перехода
mvi a, страница (аргумент out 0C1h)
jmp пзу

Анкерные места с выводом в C1 разные в разных Мониторах, это осложняет дело.

ivagor
27.03.2019, 19:47
Анкерные места с выводом в C1 разные в разных Мониторах, это осложняет дело.
Да, но это не принципиальная проблема. Можно
1. Определять версию пзу по сигнатуре (быстро, но не универсально).
2. Ввести этап предварительной настройки с поиском нужной последовательности из трех байт в пзу (очевидно достаточно найти первое совпадение).

tnt23
27.03.2019, 21:13
Осталось найти применение этому банксвичингу (сделать либу, поддержать софтом)

ivagor
27.03.2019, 21:21
Сам я думал над передачей управления в другую страницу для быстрого рисования во второй области видеопамяти. Доступаться к ней через процедуры чтения и записи 128 байтных кусков для игрушек или демок не серьезно. У меня интерес академический, но все же было интересно найти вариант.

tnt23
27.03.2019, 22:35
Мне бы пока разобраться с выводом в основную :)

ivagor
28.03.2019, 08:36
Приоткрой завесу тайны, в чем именно разобраться? Для вектора (да и для ориона, специалиста и башкирии-2м) практически все базовые алгоритмы реализованы, адаптировать для океана скорее всего не сложно.
В видео части океана для меня сейчас неизвестность разве что в битах ГС и ГК - где их точное положение и длительность, а остальное более-менее понятно.

tnt23
28.03.2019, 09:02
Да это я скорее ною в воздух, для себя разбираюсь с выводом спрайтов (готовлюсь к арканоиду).
Кстати, если есть ссылки на разжеванные исходники подобных процедур, бвло бы полезно глянуть.

Про ГС и ГК, насколько я помню проверку осциллографом, все соответствует схеме и описанию.

ivagor
28.03.2019, 09:25
Про спрайты. Есть такой человек - svofski, который сделал рива райд для вектора, там есть спрайты и исходники он выложил. Вроде PPC, который долго и упорно работает над RobotZ для вектора, выкладывал исходники. Возможно даже я выкладывал исходники игрушек со спрайтами для вектора. Все упомянутое для вектора, но для океана не сложно адаптировать, а цветные спрайты на океане даже проще выводить (разнос "битпланов" 256 байт, а не 8 Кб), правда цветов меньше. Ну и биты в байте в другую сторону.

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

Арканоид плюсую, лично мне он более интересен, чем тетрис. Для вектора есть хорошие тетрисы, а с хорошими арканоидами не все так однозначно. Может даже попробую портануть, если выложишь исходники.

svofski
28.03.2019, 12:03
Присоединяюсь к ivagor-у, Арканоид это да. Только очень важно сделать правильное управление ракеткой.

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

В Арканоиде есть трудный момент, это шапки-икосаэдры, которые летают по игровому полю свободно, причем спокойно проходят друг сквозь друга (в отличие от Попкорна, где все эти странные предметы были менее эфемерными и по-моему друг с другом сталкивались и разлетались). Кроме того, они анимированы. Хоть и не очень детально, но думается, что кадров 8 там есть. Если заранее просчитывать такое, может получиться много памяти. Но, как мне помнится, они летают медленно и может быть их можно обновлять не каждый кадр. Можно устроить для них раунд-робина через четыре кадра, например.

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

Denn
28.03.2019, 12:14
Коллеги, если я правильно понял, на Океане существует проблема с запуском кода в доп. странице(ах) ОЗУ.
Если не трудно, расскажите в двух словах, чем она вызвана? (отсутствием непереключаемого ОЗУ, соотв. п/п в Мониторе или какими-то др. аппаратными особенностями).

ivagor
28.03.2019, 12:30
Насчет спрайтов. В арканоиде их не так много, но если делать цветными, то на "предсдвинуть" памяти становится жалко, да ее может и не хватить. 64 четырехцветных спрайта 16x16 в 8 вариантах сдвига займут 4+7*6=46 Кб. Скорее всего придется сдвигать на ходу. Двойная буферизация при наличии цветных спрайтов явно понадобится, аппаратная или программная с теневым буфером и выборочным обновлением измененных фрагментов. Хотя можно все резко упростить, разнеся в векторовском духе спрайты и фон по разным битпланам, только вот битпланов у океана всего два. А еще упомянутый svofski детектор коллизий.


отсутствием непереключаемого ОЗУ, соотв. п/п в Мониторе
И то и другое, к счастью в пзу нашлись фрагменты, которые можно использовать для данной задачи.

Denn
28.03.2019, 12:43
И то и другое

Без непереключаемого ОЗУ вообще беда ((



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

Применение своего кода во втором ПЗУ (которое под ОС) позволит решить вопрос с запуском кода в допке или "это" возможно только из ПЗУ монитора?

ivagor
28.03.2019, 12:57
Применение своего кода во втором ПЗУ (которое под ОС) позволит решить вопрос с запуском кода в допке или "это" возможно только из ПЗУ монитора?
Не уверен, что я полностью правильно понял вопрос.
1. Нужные фрагменты (out 0C1h\ ret) я нашел в пзу монитора, но возможно они и в пзу доса встречаются (там не искал).
2. Свой код для более удобной передачи управления в другую страницу можно разместить в любой из двух основных пзушек (мониторной/досовской), это скорее идеологический вопрос (что океанологи считают правильным) и вопрос свободного места. Возможно еще более правильным было бы размещение таких дополнительных вещей в дополнительных областях пзу, которые заменяют в адресном пространстве основное и переключение которых предусмотрено старшими битами порта 0C1h.

Denn
28.03.2019, 13:19
ivagor, мой интерес в адаптации своей ОС, соответственно второе ПЗУ будет с моим кодом, где я могу делать всё, что захочется.
ПЗУ монитора желательно по-возможности оставить родным, без вмешательств.

П.С. прошу прощения за дурацкие вопросы, пока только присматриваюсь к новой для меня платформе, а времени на подробное изучение документации нет совсем, проще спросить (

ivagor
28.03.2019, 13:29
Настоящие дурацкие вопросы будут у меня, если я начну про аналоговую схемотехнику спрашивать, да и про многое другое.

tnt23
28.03.2019, 18:42
Есть предложение перебраться со спрайтами и арканоидами в отдельную ветку.

- - - Добавлено - - -

(Прошу прощения, что не отвечаю подробно, с телефона это не очень удобно)

- - - Добавлено - - -

Сделал тему "Спрайты" тут: https://zx-pk.ru/threads/30277-sprajty.html

ivagor
30.03.2019, 06:33
Насчет передачи управления в другие страницы. Есть вариант без пзу - размещаем в одной странице озу
out 0C1h
а в другой странице по следующему адресу
pchl
При этом не надо искать в пзу (out 0C1h\ ret) и не надо заморачиваться со стеком.
Целесообразно разместить последовательность
out 0C1h
pchl
в разных страницах по одним и тем же адресам.

tnt23
31.03.2019, 15:59
Насчет передачи управления в другие страницы. Есть вариант без пзу - размещаем в одной странице озу
out 0C1h
а в другой странице по следующему адресу
pchl
При этом не надо искать в пзу (out 0C1h\ ret) и не надо заморачиваться со стеком.
Целесообразно разместить последовательность
out 0C1h
pchl
в разных страницах по одним и тем же адресам.

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

Denn
31.03.2019, 22:10
Если нет непереключаемого ОЗУ, то возникают трудности со стэком..
Через код в общем (непереключаемом) ПЗУ ещё можно извратиться. Надо будет детально покурить архитектуру сабжа.

jerri
02.04.2019, 22:30
а как происходит передача данных с доп ОЗУ в основное?

tnt23
03.04.2019, 09:30
а как происходит передача данных с доп ОЗУ в основное?

В Мониторе есть два вызова, один копирует 128-байтовый блок из доп.ОЗУ в основное, другой в обратную сторону. Этими вызовами оперируют директивы Монитора A и B (не спрашивайте), а также CP/M для работы с RAM-диском в дополнительном ОЗУ.

ivagor
06.04.2019, 15:23
Если вдруг кто пропустил - S_V_B выложил редактор (https://zx-pk.ru/threads/30325-redaktor-dlya-podgotovki-grafiki-dlya-uknts.html?p=1006473&viewfull=1#post1006473), который может конвертировать картинки для БК (и УКНЦ, но для УКНЦ я не пробовал). Для океана вполне подходит, главное подобрать удачные параметры преобразования, или выбрать удачную исходную картинку.

tnt23
06.04.2019, 16:11
Я видел, но не успел спросить, есть ли вариант под линукс.

S_V_B
08.04.2019, 11:12
S_V_B выложил редактор
Если нужно могу сделать экспорт в нужном вам виде, напишите в моей теме.. бинарный или текстовый, последовательность байт, заголовок.. Hex (Oct), чтобы можно было вставлять и не париться :)
Палитры сейчас БК11, но собираюсь для УКНЦ "заказные" сделать если нужно опишите палитры какие вам нужны (RGB, RGB..)

ivagor
24.06.2020, 17:22
Увидел на другом форуме (https://www.phantom.sannata.org/viewtopic.php?f=33&t=31102&start=48) архив с новыми океанскими материалами.
Попробовал пзушки - оказалась промежуточная версия REL.6 (конфиг emu Okean-240.cfg - REL.5; Okean-240 fdd.cfg - REL.7/2D). Если заменить в Okean-240.cfg ссылки на образы пзу, то запускается. Загрузил из wava (ранее выгруженного из emu) ibasic и запустил - на первый взгляд работает.
В архиве есть и "настоящие" wavы, на первый взгляд более качественные, чем доступные раньше, но в emu все равно не грузятся. Скорее всего можно сделать нерилтаймовый анализатор, который их переварит, но смысл в этом академический, уникальных программ, не имеющих аналога в двоичном виде, в wav нет.

Dec
28.02.2021, 22:30
Возможно, кому-то будет интересно. В DaDither (https://zx-pk.ru/threads/32400-dadither-eshche-odna-programka-dlya-dither-ga-kartinok.html) добавлена возможность конвертации картинок для Океана. Возможны следующие варианты:

1) 256x256x2 - на выходе файл размером 16385 байт - дамп экранной области + 1 байт с кодом палитры.
2) 256x256x4 - на выходе файл размером 32769 байт - дампы двух экранных областей (гигаскрин) + 1 байт с кодом палитры.
3) 512x256x1 - на выходе файл размером 16384 байт - дамп экранной области.
4) 512x256x2 - на выходе файл размером 32768 байт - дампы двух экранных областей (гигаскрин).

Olgm
14.10.2023, 19:11
Может тоже кому-то будет любопытно.. Книжка-справочник по "Океану-240".. Когда-то в далеких 80-х группа энтузиастов собрала в кучу доступные из разных источников материалы,
что-то добавила свое, собрали все в некое подобие справочника.. Недавно запустил свой старый Океан, нашлись у коллег дискеты, и эта книга в печатном виде.. отсканирована, распознана и отредактирована. ссылка: http://www.marushev.com/%D0%A1%D1%82%D0%B0%D1%80%D1%8B%D0%B5%20%D0%BC%D0%B E%D0%B8%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8B/Okean240_book-new.pdf

там же фотки Океана и других самоделок того времени.

tnt23
15.10.2023, 07:38
Olgm, спасибо!

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

- - - Добавлено - - -

А ссылка точно рабочая?

UncleDim
15.10.2023, 08:11
ссылка точно рабочая?
похоже не очень..

DDp
15.10.2023, 08:54
А ссылка точно рабочая?
Okean240_book-new.pdf
671097 байт
CRC32: 69851878
MD5: c38652ab5923d9f2ac3f5804e38f44fe
https://disk.yandex.ru/i/INDH8DMXV5GSIQ

Olgm
15.10.2023, 11:03
Okean240_book-new.pdf
671097 байт
CRC32: 69851878
MD5: c38652ab5923d9f2ac3f5804e38f44fe
https://disk.yandex.ru/i/INDH8DMXV5GSIQ

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

tnt23:
работа с дискетами запланирована, когда будут результаты, отчитаюсь обязательно.
с дампами проще, с основными (монитор и ядро) по крайней мере, свои я считал, могу выложить (ядро ср/м - REL.8).
с ППЗУ типа RT4 и RT5 (палитры нгмд и клавиатура) - сложнее, но если кому-либо необходимо, можно будет считать и их.

tnt23
15.10.2023, 17:35
Olgm, отлично, спасибо! Будем ждать с нетерпением.

Версия Rel.8 очень интересна, как и любые другие. Хочется понять хронологию и изменения в архитектуре.

А по скоростной записи на ленту нет материалов?

Olgm
15.10.2023, 19:25
ок.. ссылки на монитор и ядро срм..
но, следует учесть, в моих версиях внесены изменения под рам-диск в 192 Кб.. (второй этаж РУ5)..
в книжке описано, что менялось (последняя страничка).
также, в этом релизе в командах ср/м убрана команда выхода в монитор.. нет ее.. т.е. из ср/м в монитор не выйти.. никак..
(ну если вытащить мс пзу с ядром, тогда да.. будет в мониторе)..

https://disk.yandex.ru/d/ix48qyfOz77wgg
https://disk.yandex.ru/d/2QKbgX-ULcarfQ

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

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

tnt23
16.10.2023, 07:26
Olgm, в платах реплики, судя по всему, поддержка РУ7 уже сделана без ЛА3. Нужно будет посмотреть внимательно схему.

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

Схемы клавиатур тоже интересны, вообще все для истории нужно :)

ivagor
16.10.2023, 11:18
Из книги с удивлением узнал (или забыл просто ) про рисование окружностей и эллипсов.
Ты пробовал и получилось?

Olgm
16.10.2023, 17:58
Ты пробовал и получилось?

конечно пробовали.. почему ж нет..

79626

tnt23
16.10.2023, 18:18
Ты пробовал и получилось?

Я не могу попробовать, моя клавиатура едет неторопливо из Китая :(

- - - Добавлено - - -

Еще меня сильно впечатлило упоминание о том, что цвета фона темнее цветов переднего плана. Это ж восемь цветов нахаляву, получается?

Olgm
16.10.2023, 18:48
Я не могу попробовать, моя клавиатура едет неторопливо из Китая :(

- - - Добавлено - - -

Еще меня сильно впечатлило упоминание о том, что цвета фона темнее цветов переднего плана. Это ж восемь цветов нахаляву, получается?

это вы имеете в виду упоминание об инвертировании палитр с помощью РТ4?

tnt23
16.10.2023, 19:01
Olgm, нет, там в книге упоминаются вроде бы штатные цвета для фона вроде "темно-синий". То есть, выходит, можно сделать рядом два пикселя, один цвета переднего плана (синий), другой цвета фона (темно-синий)?

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

Olgm
16.10.2023, 23:32
Olgm, нет, там в книге упоминаются вроде бы штатные цвета для фона вроде "темно-синий". То есть, выходит, можно сделать рядом два пикселя, один цвета переднего плана (синий), другой цвета фона (темно-синий)?

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

нет, все не совсем так.. или даже, совсем не так.. я конечно мог уже подзабыть все тонкости.. с конца 80-х то годов.. но есть же базовые характеристики системы, заложенные аппаратно, т.е. схемотехнически.. которые никак, никакими ухищрениями не изменить.. в нашем случае - океан способен в цветовом режиме выводить изображение лишь 4-мя цветами.. т.е. цветов ВСЕГДА только 4.. причем это считая цвет фона! т.е. по факту если фон черный, то любая произвольная видимая точка графики может быть лишь одним из трех цветов. Если включить режим монохромный.. то ясен пень на то он и монохромный, что точки могут быть только одного цвета.. весь сыр-бор заключается в возможности маневрировать с набором этих 4-х цветов.. и цвета эти - не любые а из фикс набора - это т.н. "палитры", т.е. наборы цветов. т.е. таки да! можно заключить что в один момент времени на экране телека можно насчитать не 3 а 4 цвета.. если цвет фона - не черный! (или не белый).. везде где в справочной информации фигурируют различные цветовые комбинации, речь идет о палитре, которая задается неким управляющим кодом (байтом), который в свою очередь, определенным образом перенастраивает схемотехническую часть, (через порт) в частности, палитры записаны в 556РТ4 (вроде, если память не изменяет).. палитр тоже не так много.. они меняют весовые коэффициенты по цветовым каналам (RGB).. , более внятно это надо разбирать уже глядя в схему.
т.о. все игры и программы для океана ограничены выбором цвета определенной точки графики как один из трех. четвертый цвет - это цвет фона.. что бы например стереть "цветную" точку.. как? надо по тем же координатам нарисовать точку цвета "фон".. а фон - это не точка, это отсутствие точки.. но да, в ряде случаев он может быть например темно-синим.
как-то так.. это классический способ получить цветное изображение на таких примитивных графических системах как в океане..
((например, в популярных в тоже время "синклерах" реализована более изощренная система при примерно той же схемной сложности они сделали возможным на одном экране (в один момент) видеть точки (элементы графики) большим количеством цветов, 8.. и это визуально сильно лучше .. любой скажет что игры синклеров яркие и красочные.. но там это достигнуто иным ущемлением - цвета определяются тоже палитрой, но в рамках одного так называемого "спрайта", квадратика 8х8 пикселей. тонкостей я уже не вспомню не обратившись к спецлитературе, но точно то что не возможно на синклере вывести 8 точек подряд в рамках одного спрайта 8-ю разными цветами..
как-то так.. но по синклерам - это отдельная тема.. просто для аналогии с океаном.

- - - Добавлено - - -

в дополнение - картинка выше, несколькими постами - экран-заставка нашей програмки программатора, была как пример рисования ESC-последовательностями графических элементов, в том числе окружностей и эллипсов.. но по ней же можно и увидеть что цветов всего 3! :-)) плюс фон - черный.. это не из-за недостатка нашей фантазии.. :-) а ограничение системы.. на этом конкретном скрине цвета: белый, желтый, зеленый.. и поменять зеленый например на красный - низя.. совсем никак .. (нет, можно, перепрошив РТ4..:-)) .. но в рамках этой палитры других цветов нет.. если перед запуском программы выставить (клавишами через ESC8***) иную палитру, то этаже программка нарисует туже картинку в других ТРЕХ цветах..
(могу как пример сделать рапу-тройку фоток).. :-)

ivagor
17.10.2023, 10:47
"ЦАПы" изображения (на выходе DD66) и фона (на выходе DD65) отдельные, поэтому (особенно учитывая точность резисторов) одинаковые оттенки изображения и фона могут получиться или случайно или в результате кропотливого подбора конкретных экземпляров резисторов, чем вряд ли кто-то занимался.

tnt23
17.10.2023, 18:10
Понятно, это у меня был проблеск иррациональной надежды, что все же можно получить хотя бы в пределах одной строки или нескольких строк одновременно два оттенка одного цвета.
Мы с коллегой ivagor давно как-то экспериментировали со сменой палитр, удавалось получать на экране одновременно обе палитры.

https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod.html?p=1001997&viewfull=1#post1001997

Про спектрум да, помню, там атрибут на блок из 8 байт (8 на 8 точек).

Olgm
19.10.2023, 19:16
Добрый вечер.. как обещал, появилась новая информация по справочнику, коллега отыскал дополнительные главы той бесценной "рукописи".. :-)
добавил в справочник, получилась редакция 2.0.
самое весомое в ней - это состав ПО на дискетах, которое было в нашем распоряжении в лучшие времена.. (что из него доступно сейчас - узнаем в скором времени)..
и более полные данные по доработке на 192 кбайт диска.
ссылка:

http://www.marushev.com/Старые мои компы/Okean240_book(v_02).pdf

tnt23
19.10.2023, 20:56
самое весомое в ней - это состав ПО на дискетах, которое было в нашем распоряжении в лучшие времена

Графический редактор интересен. Уж не в нем ли создавалась картинка с кораблём?

alepo
20.10.2023, 02:43
Прошивка DD66 устроена так, что один из палитровых цветов - может быть или цветом фона или жестко закодирован (табличка в МПСС №4 1986г не совсем правильная).

Вот что получилось у меня при попытке разобраться с этой прошивкой (возможны ошибки):
79637


Попробовать получить 8-1 цветов в нескольких строках можно анализируя бит B0 в порту DD78 (0x41) (гашение строки) и быстренько сменить палитру за время обратного хода луча.

ivagor
20.10.2023, 07:58
табличка в МПСС №4 1986г не совсем правильная
Несоответствие цветов журналу обсуждали в соответствующей теме (https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod). Там не с самого начала, примерно с этого сообщения (https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod.html?p=997541&viewfull=1#post997541).

alepo
20.10.2023, 15:40
- - - Добавлено - - -


Несоответствие цветов журналу обсуждали в соответствующей теме (https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod). Там не с самого начала, примерно с этого сообщения (https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod.html?p=997541&viewfull=1#post997541).

ivagor, в первую очередь я имел ввиду, что там, где для некоторых палитр написано "черный цвет", следует читать как "цвет фона".
Перепутанная маркировка R, G, B на схеме следует как раз из того если считать остальные названия цветов табличке №2 - верными.

tnt23
20.10.2023, 17:01
Попробовать получить 8-1 цветов в нескольких строках можно анализируя бит B0 в порту DD78 (0x41) (гашение строки) и быстренько сменить палитру за время обратного хода луча.

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

http://www.sensi.org/~tnt23/ok240/palette_jitter.jpg

Вот другой рецепт давали в топике про Арканоид - настроить системный таймер на прерывания синхронно с началом кадра.

Я еще третий вариант думаю, использовать свободный канал таймера и свободную линию прерываний для смены палитры раз в несколько строк.

- - - Добавлено - - -

Смотрю вот и думаю - почему такие странные цвета фона? Явно же они перебираются от 0 до 7. Нормально видны только красный, зеленый и белый цвета фона. Остальные или черные, или на моем экземпляре так умучены?

http://www.sensi.org/~tnt23/ok240/palette_per_8_lines

- - - Добавлено - - -

Если принять в качестве рабочей версию, что у меня перепутаны цвета на видеовыходе, а также руководствоваться таблицей №2 из Океанской Книги, то получается, что



фон в режимах 1, 2, 6 фиксированный (белый, зеленый, синий), в остальных режимах определяется соответствующими битами фона в регистре
на моей картинке имеем фиксированные цвета фона (белый, красный, зеленый)
там, где у меня фон чёрный, на самом деле должны проступать оттенки цвета сообразно умученности сопротивлений в видеовыходе!
то, что мы принимали за оргазм, было приступом астмы

Olgm
20.10.2023, 21:41
Мое скромное мнение.. вот не понимаю я, а к чему вообще все эти рассуждения теоретические и идеи экспериментов по смене палитр "на лету".. ? все ради того что бы
получить не 3 (4) а 7 или 8 цветов? а зачем? Хотите много цветов - есть же немало других машин, чуть сложнее или чуть проще.. но ИНЫХ.. с иной архитектурой, иной схемотехникой формирования страниц видеопамяти и видеовыходов.. Океан был задуман таким! и только таким.. Изначально он не был ориентирован на игры как основное.. это вполне себе удобный, надежный прибор для иных задач (сбор данных, первичная обработка.. из графики наверное стат данные там.. еще что но только не игры). .и для этих задач режим цветной графики вполне себе удобен.. и с 4-мя цветами.. на мой взгляд. прикручивание всяких там расширителей палитр - "пятое колесо".. и неослабевающий интерес к "цветовой" теме несколько удивляет..

tnt23
20.10.2023, 22:20
Прикручивать разные расширители и улучшатели - это любимое занятие отечественных спектрумостроителей (не обязательно только спектрумов, вообще любых самодельных компов).

Но есть и другой интерес, выжать из аппаратуры максимум возможностей, даже если создатели их до конца не осознали. Хороший пример - получение на УКНЦ больше двух сотен цветов при изначально доступных восьми или шестнадцати.
Практического смысла в этом, может быть, и нет, зато присутствует творческая составляющая. Ну и гимнастика для мозга.

ivagor
21.10.2023, 07:20
выжать из аппаратуры максимум возможностей, даже если создатели их до конца не осознали.
Можно еще и с другой точки зрения сформулировать. Интересно знать реальные детали работы ретрокомпьютера. Часто в околоавторских описаниях (я не только про океан) или нет значительной части данных или даже приведены несоответствующие реальности вещи. Итогом разбирательств в таком случае становится как минимум правильное описание, а если повезет, то и правильная эмуляция. Последнее океану в обозримом будущем не грозит, но хотя бы корректная информация для истории - уже хорошо.

argo
21.10.2023, 07:35
по записи на ленту нет.. увы, экспериментов не было..
Вот тут, мне кажеться, ты не прав, были. Я писал отдельную пограмму, которая писала на скорости 9600, если не ошибаюсь, это было до того как сделали контроллеры. Но этот код не интегрировали в монитор. Просто был отдельный загрузчик. Он не прижился, по моему из-за большого числа сбоев, особенно при переносе ленты с одного магнитофона на другой.

- - - Добавлено - - -


а если повезет, то и правильная эмуляция. Последнее океану в обозримом будущем не грозит
Вроде эмулятор есть, я по крайней мере вчера какой-то запускал ( http://bashkiria-2m.narod.ru/index/fajly/0-11 )

ivagor
21.10.2023, 08:16
Под "правильной" эмуляцией в контексте того поста я подразумевал точную эмуляцию максимального числа деталей реального компьютера. Замечательно, что b2m в свое время добавил в Emu поддержку океана, но понятно, что он в основном решал задачу обеспечения запуска классических программ. А среди них, например, нет хитрых тестов или демок, опирающихся на особенности экранной развертки и в эмуляторе экран реализован в объеме достаточном для классики, но не более.

Olgm
21.10.2023, 10:10
да, против аргумента о гимнастике - спору нет! :-) безусловно.. просто видимо "упражнения" каждый выбирает на свой вкус.. :-) да, видимо так..

tnt23
21.10.2023, 10:18
argo, сохранились какие-нибудь материалы от того загрузчика? Вообще о модификациях Монитора? Интересно в общем-то всё.

Olgm
21.10.2023, 10:38
[QUOTE=argo;1187374]Вот тут, мне кажется, ты не прав, были. Я писал отдельную программу, которая писала на скорости 9600, если не ошибаюсь, это было до того как сделали контроллеры. Но этот код не интегрировали в монитор. Просто был отдельный загрузчик. Он не прижился, по моему из-за большого числа сбоев, особенно при переносе ленты с одного магнитофона на другой.

Ооо! привет Андрей! :-) С вступлением!
Да, как ты написал, сразу и вспомнил.. :-)

Для других читателей.. Argo - второй (вернее первый.. :-)) соавтор нашего "Справочника...".. и автор бОльшего числа программ, из того времени (ну и места.. г.Североморск..)
Он сможет ответить на многие вопросы.. ну с поправкой на то что мы можем что-то и не помнить уже.. :-)

argo
21.10.2023, 10:52
argo, сохранились какие-нибудь материалы от того загрузчика? Вообще о модификациях Монитора? Интересно в общем-то всё.

Вероятнее всего нет, я не думал не гадал, что это кого-то может заинтересовать :) , > 30 лет прошло. Сейчас пытаемся что-то восстановить, может чего найдем.
Было много всего, музыкальный редактор был, файловый менеджер по типу нортон командер, программатор... да много чего, но это все в прошлой жизни, может чего и прорастет - не знаю. Музыкальный редактор кстати фигурирует в дисках уважаемого Olgm, но похоже он для 5й версии и на 8й не запускается.
Что касается загрузчика, если мне не изменяет память, там формат манчестер 2, его в общем-то повторить большой проблемы я не вижу, только зачем :)

Olgm
21.10.2023, 11:04
Вероятнее всего нет, я не думал не гадал, что это кого-то может заинтересовать :) , > 30 лет прошло. Сейчас пытаемся что-то восстановить, может чего найдем.
Было много всего, музыкальный редактор был, файловый менеджер по типу нортон командер, программатор... да много чего, но это все в прошлой жизни, может чего и прорастет - не знаю. Музыкальный редактор кстати фигурирует в дисках уважаемого Olgm, но похоже он для 5й версии и на 8й не запускается.
Что касается загрузчика, если мне не изменяет память, там формат манчестер 2, его в общем-то повторить большой проблемы я не вижу, только зачем :)

не только он.. там немало твоих программок.. :-)

tnt23
21.10.2023, 11:05
Что касается загрузчика, если мне не изменяет память, там формат манчестер 2, его в общем-то повторить большой проблемы я не вижу, только зачем

Магнитофонный узел довольно сложный, по сравнению с другими того времени (трёхбитный ЦАП, обнаружение пауз), опять же статья в МПСиС будоражила воображение цифрой в 6000 бод. На сегодняшний день никаких следов таких записей нам не известно. Простое техническое любопытство :)

argo
21.10.2023, 12:19
Магнитофонный узел довольно сложный, по сравнению с другими того времени (трёхбитный ЦАП, обнаружение пауз), опять же статья в МПСиС будоражила воображение цифрой в 6000 бод. На сегодняшний день никаких следов таких записей нам не известно. Простое техническое любопытство :)

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

У меня сохранились какие-то распечатки кода программ, посмотрю может там есть что-нибудь, если найду поделюсь.

Olgm
18.11.2023, 13:45
а кто знает, куда делась 40-я страничка.. ? :-))

CityAceE
18.11.2023, 16:13
куда делась 40-я страничка.. ?
Сюда (https://zx-pk.ru/threads/35402-emulyator-quot-okean-240-quot.html).

Olgm
18.11.2023, 21:55
Ооо! ясно, спасибо! :-)

tnt23
25.11.2023, 18:14
Возможно, кому-то будет интересно. В DaDither (https://zx-pk.ru/threads/32400-dadither-eshche-odna-programka-dlya-dither-ga-kartinok.html) добавлена возможность конвертации картинок для Океана. Возможны следующие варианты:

1) 256x256x2 - на выходе файл размером 16385 байт - дамп экранной области + 1 байт с кодом палитры.
2) 256x256x4 - на выходе файл размером 32769 байт - дампы двух экранных областей (гигаскрин) + 1 байт с кодом палитры.
3) 512x256x1 - на выходе файл размером 16384 байт - дамп экранной области.
4) 512x256x2 - на выходе файл размером 32768 байт - дампы двух экранных областей (гигаскрин).

Dec, а можно учесть в палитрах 0, 3, 4, 5 еще и цвет фона? Он также может быть от 0 до 7, как и цвет переднего плана, только темнее: https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod.html?p=1189186&viewfull=1#post1189186

Dec
26.11.2023, 08:09
а можно учесть в палитрах 0, 3, 4, 5 еще и цвет фона? Он также может быть от 0 до 7, как и цвет переднего плана, только темнее
Опишите спецификацию того, как меняется цвет в тех или иных ситуациях. Будет спецификация - добавлю в программу ее поддержку.

tnt23
26.11.2023, 20:06
Dec, я не художник, но вот как-то так:

https://www.sensi.org/~tnt23/ok240/DaDither_Okeah240.png

В конце .OKS файла записан байт с "палитрой", младшие 3 бита в нем задают собственно палитру. Следующие 3 бита как раз определяют, какой цвет будет рисоваться на месте черного.

Dec
30.11.2023, 01:37
можно учесть в палитрах 0, 3, 4, 5 еще и цвет фона?
Добавил.

tnt23
08.12.2023, 14:24
Olgm, справочник можно чуть дополнить и расширить :) разбираюсь с версиями MONITOR (BIOS), результаты свожу в таблицу https://www.sensi.org/~tnt23/ok240/rom/

Е02А - WAIT (ОЖИДАНИЕ ПАУЗЫ С МАГ.)
E02D - SIGNAL (ПРОВЕРКА МАРКЕРА БЛОКА С МАГ.)
Е030
Е033 - ДРАЙВЕРЫ РАБОТЫ С КОНТРОЛЛЕРОМ НГМД (ДЛЯ ВЕРСИИ REL 5')

+E036 - вывод нуль-терминированной строки

и еще 8 пока не раскопанных точек входа, некоторые дублируют графические функции

tnt23
09.12.2023, 14:34
В выложенной версии Монитора (Rel8?) также хватает странностей:

- точка входа WARMBOOT (e003) выполняет не теплую перезагрузку, а вывод байта из аккумулятора на экран в десятичном (?) виде
- если Монитор не нашел CP/M, выдается сообщение и процессор останавливается (HALT). Проверить пока не могу, может, прерывания от клавиатуры позволят работать в Мониторе
- с адреса ea39 лежит таблица из 34 дополнительных 8-байтовых пиктограмм
79898

Dec
16.03.2024, 02:20
А можно ли в Океан менять палитру и цвет фона между строками? Если можно, то можно попробовать выводить картинки не с 4, а с 8 цветами.

tnt23
16.03.2024, 18:55
А можно ли в Океан менять палитру и цвет фона между строками? Если можно, то можно попробовать выводить картинки не с 4, а с 8 цветами.

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

http://www.sensi.org/~tnt23/ok240/palettes_with_bg_1K.png

ivagor
16.03.2024, 19:06
Самое быстрое, что можно сделать, это переключать палитру через каждые 2 строки, ну и даже каждую строку, но сложнее синхронизация и малопригодно на практике.
На мой взгляд сложность переключения каждую строку и через 2, 3, 4 одинаковая. Проще через 5, 10, 15 и т.д., т.к. целое число тактов. Но и каждую строку не проблема при наличии реала для отладки. Вот настроить предсказуемое стабильное переключение внутри строки действительно сложно.

tnt23
16.03.2024, 20:05
ivagor, а почему целое число тактов кратно 5?

Реал-то у меня есть, надо будет по весне его снова выкопать.

ivagor
16.03.2024, 21:19
153.6 тактов в строке*5=768 тактов

- - - Добавлено - - -

Пробежался по ветке, освежил воспоминания.
Я забыл, что ты делал синхронизацию смены по таймеру (https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod.html?p=999712&viewfull=1#post999712). Так лучше и проще, а я думал про вариант без прерываний, с расчетом тактов проца.

tnt23
17.03.2024, 20:27
Найду в себе силы доделать вариант платы с возможностью зацепить КИ и СИ на свободные линии прерываний - будет возможность синхронизироваться и без таймера.