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) выполняет не теплую перезагрузку, а вывод байта из аккумулятора на экран в HEX-виде
- если Монитор не нашел 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
Найду в себе силы доделать вариант платы с возможностью зацепить КИ и СИ на свободные линии прерываний - будет возможность синхронизироваться и без таймера.

UncleDim
09.08.2024, 11:43
Пробовал на 38400 с делителями 2 и 3, безуспешно. То ли уход частоты большой, то ли процессор уже не справляется.
Вопрос от новообращенного: а океанская религия не позволяет работать с писюка на получающихся при этихделителях скоростях 32к и 48к? Ширпотребные teraterm и, к примеру, cp2102 вроде позволяют в произвольную скорость..
(Сам пока не могу попробовать, бесклавиатурный ещё))

tnt23
10.08.2024, 10:50
а океанская религия не позволяет работать с писюка на получающихся при этихделителях скоростях 32к и 48к?

У меня осталось впечатление, что стандартный код монитора по приему символов по последовательному каналу просто начинает не успевать. А если надо и передавать тоже, то совсем печально.
Но никто не мешает накидать свой быстрокод и попробовать.

Клавиатуру старую PS/2 через ардуину можно подкинуть или через BluePill.

UncleDim
10.08.2024, 11:35
Стандартный код, надо полагать, не дёргает за rts? Бо он повис в воздухе..
Впрочем, это не отменяет того факта, что при делителях что 2, что 3 ошибки на 38400 гарантированы.

tnt23
10.08.2024, 14:21
Стандартный код, надо полагать, не дёргает за rts? Бо он повис в воздухе..
Впрочем, это не отменяет того факта, что при делителях что 2, что 3 ошибки на 38400 гарантированы.

Про управление потоком не помню, нужно смотреть слова инициализации ВВ51. Но скорее всего нет, не дергает.

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

UncleDim
11.08.2024, 12:01
(клавиатурное сейчас в состоянии "вспомнить всё"(mplab), включая то, чего и не знал(hi-tech C), ну и в магазин за мелким пиком надо)
но поскольку зуд - таки вписал делитель "2" в тест; вписал скорость 48000 в cp2102 (на место какой-то несуразной 51200), и вот результат
81109

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

длительность rst2 (читай - время от прихода символа по уарту до его считывания) пляшет в пределах 20..50 мкс, т.е. без припаивания управления потоком не обойдется

UncleDim
12.08.2024, 21:16
без припаивания управления потоком не обойдется
день исследования управления потоком на вв51 прошел увлекательно, но в итоге обошлось)
в сухом остатке - увеличил тактовую на вв51 с 2.4 до 3 МГц[DD42] (ну и еще выкинул команду "ani 7f" перед возвратом из мониторной процедуры RI, бо не понимаю зачем она)
гружу кораблик на скорости 48к:
81113

tnt23
13.08.2024, 11:04
Так какая теперь инициализация? Управление потоком задействовано?

UncleDim
13.08.2024, 13:52
Управление не задействовал, всё успевает. Делитель двоечка (tx-rx-clk не менялся)

cy6
22.10.2024, 00:27
Немного Лехиного волшебства


https://www.youtube.com/watch?v=q5BuYP3fXao&t=6s


https://www.youtube.com/watch?v=v09OgpBTmfA&t=2s

puller
24.10.2024, 22:24
Немного Лехиного волшебства

Меня очень удивило то, что он поместил в ПЗУ несколько CP/M программ. Если кто-нибудь в курсе, как это делается, пожалуйста напишите или дайте ссылку.

anarchyman
25.10.2024, 20:24
А какой сейчас актуальный эмулятор для macos?

tnt23
25.10.2024, 23:12
Меня очень удивило то, что он поместил в ПЗУ несколько CP/M программ. Если кто-нибудь в курсе, как это делается, пожалуйста напишите или дайте ссылку.

Вряд ли это в ПЗУ. Скорее загружены с ленты или через последовательный порт.

UncleDim
25.10.2024, 23:18
Вряд ли это в ПЗУ
Он 48к пзу как часть рам-диска сделал.
https://github.com/alemorf/retro_computers/blob/master/Ocean_240/firmware_source/ramdiskinit.inc

puller
26.10.2024, 00:07
То есть вместо второй 2764 он использовал 27512, в которой первые 8K это CP/M, а остальное - часть RAM-диска? Это же надо слегка порезать дорожки и допаять провода, чего я не заметил на видео.
И как-то надо подготовить содержимое для записи в эти 48K.

UncleDim
26.10.2024, 00:25
вместо второй 2764 он использовал 27512
нет, на видео видно 2х27512 (11:07)

puller
27.10.2024, 10:38
Идея с ПЗУ диском просто великолепна. С двумя 27512 можно иметь до 96К нестираемых программ. А еще у меня лежит без дела десяток 27010...

UncleDim
27.10.2024, 15:32
можно иметь до 96К
а вот для этого придется уже резать-мгтф-ить)

puller
28.10.2024, 01:01
Внимательно разглядывал видео на рутубе, но так и не смог определить тип ПЗУ.
Поскольку изменений в монтаже не наблюдается, то скорее всего, установлены 27256,
потому как на моей плате первые ноги ПЗУ (Upp) соединены с +5V, а для 27512 первая нога это A15.
Получается, в двух 27256 48К свободно.
Код посмотрел, очень остроумно, но как подготовить данные для ПЗУ, пока не допер.

UncleDim
06.12.2024, 09:18
запускаешь конфигурацию Okean-240 fdd, выбираешь образ в первый дисковод
Смотрю я на эти образы - странные они какие-то. Объем 720к, размер блока 2к, а номера блоков однобайтовые - больше 512к никак не заполнить.
Прошу пояснительную бригаду)

ps. кажись проясняется. это образы кагбэ 80-дорожечных 720к дисков, записанных в формате 360к, через дорожку..

UncleDim
07.01.2025, 03:00
меня жизнь связала с замечательными людьми. один из них, как недавно выяснилось, в случайном разговоре,, работал в лаборатории Тилинина (там, где создали и использовали Океан-240) и его супруга как раз работала за ним

я спросил контакты, он в телеге редко появляется,, они не против пообщаться на тему, но память, сами понимаете.)

tnt23
07.01.2025, 19:53
UncleDim, вот бы материалы какие-нибудь добыть (любые, от черновиков до дискет)

UncleDim
08.01.2025, 22:53
на материалы надежды мало, а вот вопросы прояснить мало ли какие..
anbobz@rambler.ru
Александр Бондарик
и Ольга Борисовна емнип

tnt23
26.09.2025, 10:11
Интересное кино.

Отлаживая утилиту IO.COM на реале, столкнулся со странностью: пишу в порт управления цветом 0E1h разные данные, а обратно читаю неизменно 0E1h. Проверил другие порты той же ВВ55 - та же история; из порта 0E0h читается всегда 0E0h, из порта 0E1h - 0E1h. Как если бы читал из несуществующего порта.

Посмотрел внимательно схему:

82855

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

tnt23
27.09.2025, 10:13
...как и с DD17 (порты управления банкингом ОЗУ и ПЗУ, и аппаратным скроллом). На журнальной схеме /RD подключены к точке +B.

yevrowl
19.10.2025, 11:33
Какая кодировка используется в «Океане-240»? Доступна ли таблица символов?

tnt23
19.10.2025, 12:31
Какая кодировка используется в «Океане-240»? Доступна ли таблица символов?

Кодировка вроде бы КОИ-8. Таблицу символов можно распечатать простой программой на Basic, переключаясь между наборами с заглавными и прописными буквами латиницы и кириллицы:


<ESC>7N - ВЫБОР НАБОРА СИМВОЛОВ N=0,1,2
N= 0: ЛАТИНСКИЕ, ПРОПИСНЫЕ/СТРОЧНЫЕ
1: РУССКИЕ, ПРОПИСНЫЕ/СТРОЧНЫЕ
2: ПРОПИСНЫЕ, ЛАТИНСКИЕ/РУССКИЕ

yevrowl
19.10.2025, 13:47
Таблицу символов можно распечатать простой программой на Basic

Попытался вывести таблицу символов посредством IBasic и MBasic:

83004 83005

Первый выдаёт ошибку синтаксиса, второй зависает после ввода первой строки программы.

tnt23
19.10.2025, 14:01
Вечером попробую на реале.

На всякий случай есть немного инфы по IBASIC от ivagor


Коротко про IBASIC. Составил Иван Городецкий, 02.02.2019

1. Служебные директивы (только те, которые необычные, RUN и LIST не вижу смысла комментировать)
1.1 SCR - просто стирает текущую программу в памяти (в других бейсиках это часто NEW)
1.2 NEW[имя] - как SCR, но с заданием имени.
1.3 SAVE[имя] - выгрузка программы
1.4 OLD[имя] - загрузка программы
1.5 SYS - выход в дос
1.6.1 NAME - показывает текущее имя программы
1.6.2 NAMEимя - задает новое имя программы
1.7 UNSAVE[имя.BSC] или ERA[имя.BSC] - удаление программы с диска
1.8 LLIST - в данном бейсике синоним LIST, такие дела
1.9 NULLаргумент. Аргумент от 0 до 255. Задание задержки при переходе к новой строке или при скролле.
Замечание по поводу директив с именем в квадратных скобках. Это значит, что имя можно указывать, а можно не указывать, и тогда будет использовано имя заданное при старте программы или через NAME (или запрошено в случае OLD).

2. Звук
2.1. BELL - звонок
2.2. SOUND высота, длительность - задает параметры звука для BELL.

3. Графика
3.1 GRAF - очистка экрана, вместо CLS. Кроме того этот оператор установит 3й бит в BFDC и BFE6 и получится аналог CLS 8-15 (т.е. без скролла основого экрана) в MB.COM. Выйти из этого режима можно по директиве LIST
3.2 RECT x,y - прямоугольник из текущей точки до x,y
3.3 COL цвет
3.4 POS x,y - перемещение графического курсора
3.5 LINE x,y - линия из текущей точки до x,y
3.6 SET палитра,цвет_фона
3.7 SYM выражение для печати - аналог PRINT, но с возможностью задания места для печати с точностью до точки (позицию для печати задает предыдущий графический оператор, удобно использовать POS).

4. Cредства для взаимодействия с машиннокодовыми процедурами.
4.1 Функция ARG(значение) - задает значение пары BC, которое будет передано CALL
4.2 Функция CALL(адрес), про которую я уже упоминал. На входе: BC - значение заданное в ARG, DE - указатель на специальный стек. В качестве результата возвращает содержимое BA (т.е. B как бы старшая половина регистровой пары, A - младшая). Кроме того можно возвратить значение в "стеке", указатель на который был передан в DE.
4.3 Функция POP() - выбирает значение со "стека", с которым работал CALL. Т.е. CALL кроме результата в BA может вернуть и другие результаты работы машиннокодовой процедуры.
4.4 Функция UNTRAP(). Весьма специфическая. Машиннокодовая процедура, вызываемая по CALL или POKE могут изменить ячейку, отвечающую за "стек перехвата ошибок". Как я понимаю, это нужно для расширения возможностей бейсика, например так можно добавить работу со строковыми переменными. UNTRAP снимает с этого стека значение, т.е. убирает перехват.
Еще можно упомянуть, что есть функция INP для чтения портов. Оператора OUT для записи в порты (в отличие от MB.COM) в IBASIC нет.
Но благодаря мощным возможностям по взаимодействию с машиннокодовыми процедурами можно доопределить нужные вещи, хоть печать esc, хоть запись в порты.
Например, для печати esc можно использовать процедурку
4000h mvi c,1Bh
4002h jmp 0913h
Вызов:
5GRAF
10A=CALL(16384)
20PRINT"1234" - нарисует прямоугольник
или 20PRINT"2345" - нарисует линию

yevrowl
19.10.2025, 15:37
Кодировка вроде бы КОИ-8.
Не слишком напоминает КОИ-8 или CP866 ввиду отсутствия кириллицы. =)

Выяснил, что CHR$(31) и CHR$(159) — очистка экрана, а CHR$(13) — смещение «каретки» в верхний левый угол экрана.

Вот компилированная программка на CP/M которая выводит задаваемые диапазоны символов: 83010


110 FOR I = 1 TO 25
120 PRINT
130 NEXT I
140 INPUT "A (FROM 1 TO 255) = "; A
150 INPUT "B (FROM 1 TO 255) = "; B
160 FOR I = 1 TO 25
170 PRINT
180 NEXT I
190 FOR I = A TO B
200 IF I = 31 THEN I = I + 1
210 IF I = 159 THEN I = I + 1
220 PRINT I; "= "; CHR$(I); " ";
230 NEXT I
240 PRINT
250 END

Сложилось впечатление, что всего 95 символов:

83009

tnt23
19.10.2025, 16:41
Сложилось впечатление, что всего 95 символов

В знакогенераторе - да, причем они разные для разных режимов (ESC<7><режим>), описанных выше.

Также в REL.8 есть странный режим "вывод игровой графики", добавляется еще 32 изображения пиктограмм. Но это все особенности чисто "Океана".

yevrowl
19.10.2025, 17:24
В знакогенераторе - да, причем они разные для разных режимов (ESC<7><режим>), описанных выше.

Также в REL.8 есть странный режим "вывод игровой графики", добавляется еще 32 изображения пиктограмм. Но это все особенности чисто "Океана".

Подскажите пожалуйста, можно ли вывести средствами Бейсика (MBasic) на экран все упомянутые символы?

tnt23
19.10.2025, 17:52
Можно, попробуйте перед прогоном цикла печати символов давать последовательности кодов

27, 55, 48

27, 55, 49

27, 55, 50

27, 55, 51

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

См. наборы Г0 и Г1 тут:

https://meganorm.ru/Data2/1/4294820/4294820311.htm

yevrowl
19.10.2025, 19:35
Можно, попробуйте перед прогоном цикла печати символов давать последовательности кодов

Каким образом, то бишь какими командами Бейсика, эти коды давать?
Из прочитанных сведений о ГОСТах не уразумел, каким образом задействовать представленные четыре набора из трёх чисел.

tnt23
19.10.2025, 20:40
Каким образом, то бишь какими командами Бейсика, эти коды давать?

При помощи функции CHR$(), как в вашем примере. В нашем случае как-то так:


105 PRINT CHR$(27);CHR$(53);CHR$(48)

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

Что-то MBasic какой-то неживой - практически все время то зависает, то вываливается назад в CP/M.

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

Вот результат переключения кодовой страницы из латиницы в кириллицу подачей последовательности 27, 55, 49 (ESC 7 1):

83016

Остальные три варианта дают разные сочетания латиницы и кириллицы в строчном и прописном исполнении.

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

yevrowl
19.10.2025, 20:44
При помощи функции CHR$(), как в вашем примере. В нашем случае как-то так

Вообще не заменил разницы в выводе:


100 INPUT "X (FROM 1 TO 4) = "; X
110 PRINT CHR$(31)
120 IF X = 1 THEN PRINT CHR$(27); CHR$(53); CHR$(48);
130 IF X = 2 THEN PRINT CHR$(27); CHR$(53); CHR$(49);
140 IF X = 3 THEN PRINT CHR$(27); CHR$(53); CHR$(50);
150 IF X = 4 THEN PRINT CHR$(27); CHR$(53); CHR$(51);
160 FOR I = 1 TO 255
170 IF I = 13 THEN I = I + 1
180 IF I = 31 THEN I = I + 1
190 IF I = 159 THEN I = I + 1
200 PRINT CHR$(I); " ";
210 NEXT I
220 PRINT
230 END


Что-то MBasic какой-то неживой - практически все время то зависает, то вываливается назад в CP/M.

Поэтому приходится компилировать при помощи BasCom для i8080 и передавать исполняемые файлы в эмулятор «Океан-240».

tnt23
19.10.2025, 21:41
Вообще не заменил разницы в выводе

Неудивительно - это потому что я плохо перевел 0x37 в уме как 53, а на самом деле это 55.

Взял какой-то Microsoft BASIC-80 v521 отсюда - https://github.com/davidly/cpm_compilers/tree/main/Microsoft%20BASIC-80%20v521 , сразу другое дело:

83017

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

А еще там же взял прикольный NVBASIC, в нем CHR без значка доллара, и есть дисковые функции даже.

83018

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

А еще там же есть не менее прикольный BASIC/Z:




BASIC/Z - not your basic BASIC

BASIC/Z is an extended implementation of the BASIC language. As anative code compiler, it generates executable machine code which iscompatible with 8080, 8085, and 2-80 microprocessors. It requires a48K or larger system, as well as a console device with addressablecursor, BASIC/Z supports numerous single user and multi-useroperating systems, including CP/M (2.x/3.0x), MP/M II, Turbodos, VectorGraphic Extended CP/M, and other similar environments .

yevrowl
19.10.2025, 22:29
Спасибо, на этот раз получилось:

83021


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

Значит, есть и блок с символами псевдографики? Вот эти и ищу!


А еще там же взял прикольный NVBASIC

Возможно, будет интересен и этот раздел с Бейсиками (http://old-dos.ru//index.php?page=files&mode=files&do=list&cat=58) — подойдут обозначенные как для CP/M DOS или MSX-DOS.

tnt23
19.10.2025, 22:32
Значит, есть и блок с символами псевдографики? Вот эти и ищу!

Оно прям в этом топике тут - https://zx-pk.ru/threads/14176-kompyuter-quot-okean-240-quot.html?p=1190333&viewfull=1#post1190333

Как этим пользоваться, я пока не понял. Есть комментарии в дизассемблированных исходниках: https://github.com/alemorf/retro_computers/blob/ed71ac64b21302a4ba7a376b061842f0b93579be/Ocean_240/firmware_source/game.inc

yevrowl
20.10.2025, 15:21
Почему в статье на Википедии (https://ru.wikipedia.org/wiki/%D0%9E%D0%BA%D0%B5%D0%B0%D0%BD-240) обозначен текстовый режим 64×20, в то время как в эмуляторе наблюдаю 40×25?

tnt23
20.10.2025, 15:26
Так это Википедия же.

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

Вообще до REL.8 считалось, что в цвете текстовых режимов всего 2: 64 символа в строке и 32. Теперь их вроде бы 3: 64, 40, 32. Попереключать режимы можно последовательностью ESC 6 <N>, где <N> - уже полюбившийся нашим читателям параметр с неочевидным диапазоном значений 0..3, 4..7, 8..9

yevrowl
20.10.2025, 15:59
Теперь их вроде бы 3: 64, 40, 32.
Добавил в статьи на Википедии и на Хабре (https://habr.com/ru/articles/799835/).

tnt23
20.10.2025, 16:20
Добавил в статьи на Википедии и на Хабре.

Я бы сперва проверил эти режимы в хотя бы в эмуляторе, во избежание.

Таблица в статье на Хабре, как мне кажется, в неудачном формате и изобилует ошибками и неточностями.

yevrowl
20.10.2025, 18:34
Я бы сперва проверил эти режимы в хотя бы в эмуляторе, во избежание.
Есть ли возможность сделать это на рабочем экземпляре?


Таблица в статье на Хабре, как мне кажется, в неудачном формате и изобилует ошибками и неточностями.
Сам по себе редактор (конструктор) таблиц там довольно ограниченный. Изначально ещё и звуковые возможности добавить планировал, да только не помещаются по ширине выделенной колонки. Что касается ошибок и неточностей, какие были в комментариях, и здесь подсказывали, исправлял и дополнял сведениями. Вполне допускаю, что от этого того и другого ещё поднакопилось.

tnt23
20.10.2025, 19:57
Есть ли возможность сделать это на рабочем экземпляре?

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

tnt23
21.10.2025, 06:51
Сейчас пытаемся что-то восстановить, может чего найдем.
Было много всего, музыкальный редактор был, файловый менеджер по типу нортон командер, программатор... да много чего, но это все в прошлой жизни, может чего и прорастет - не знаю. Музыкальный редактор кстати фигурирует в дисках уважаемого Olgm, но похоже он для 5й версии и на 8й не запускается.

argo удалось что-нибудь найти? или хотя бы диски сырьем?

yevrowl
30.10.2025, 05:47
В статье на Википедии упоминается «Океан-250» как следующая модель. Это ревизия 240.2 или отдельный ПК? Или же, быть может, вообще мистификация?

tnt23
30.10.2025, 09:23
Кроме упоминания на сайте AZMASTER и двух кусков кода оттуда же, мало похожих на прошивку, никаких других сведений на сегодняшний день нет.

Pyk
30.11.2025, 12:08
Делаю поддержку "Океана" в Emu80. Сделано уже довольно много, так что залил поддержку Океана в основную ветку и сделал тестовые сборки под windows (https://emu80.org/v4beta/Emu80qt_40544_test.7z)и linux (https://emu80.org/v4beta/Emu80qt_40544_linux_x86-64.tar.gz).
Предлагаю потестировать.

Сделано:

6 переключаемых конфигураций, в том числе вариант с матричной клавиатурой и Турбо-монитором,
512 Кб памяти,
два варианта палитры и черно-белый выход,
работа с FDD и RAM-диском,
загрузка hex-файлов, а также ok и com.


Пока не реализовано:

ВВ51,
принтер,
русская раскладка клавиатуры,
чтение с магнитофона,
переключение палитры в пределах скан-линии,
хелп по платформе.


Набор файлов ПЗУ на данный момент выбран достаточно произвольно, постарался выбрать основные попавшиеся мне версии. Однако вариантов очень много, плохо понимаю, чем они отличаются, неплохо бы разобраться. Свел все найденные в разных источниках прошивки в один архив (https://emu80.org/temp/okean_roms_all.zip).

Формат имен файлов в архиве: тип-crc32-источник-оригинальное_имя_файла
Итого 11 вариантов cp/m и 12 вариантов Монитора, разобраться бы, что есть что.
Варианты с источником emu80 - это те, которые используются в данный момент в эмуляторе.

CP/M можно распределить во версии REL.X, присутствуют версии от 4 до 8. С Мониторами сложнее, можно попробовать, например, смотреть количество системных вызовов в начале.

tnt23
30.11.2025, 12:15
Сделал вкладку "Версии ROM" в гуглотаблице - https://docs.google.com/spreadsheets/d/1na76G9LdmVR-rp1MdgIxdVd7KN82efUQqIXETKm6iYc/edit?gid=1845760317#gid=1845760317

Пока разбираюсь с версиями Монитора (точнее, BIOS, так как собственно Монитор в поздних версиях был выпилен). Версии BIOS сгруппированы по одинаковой контрольной сумме, и отсортированы по возрастанию количества сисколлов.