Наступила некоторая ясность относительно ESC последовательности со знаком вопроса (ESC?12345678): предположительно ею задаются частота и длительность BELL.
Вид для печати
Наступила некоторая ясность относительно ESC последовательности со знаком вопроса (ESC?12345678): предположительно ею задаются частота и длительность BELL.
Ютубу с Гносиенной №1 исполненной командой TYPE в студию!
Сперва надо на реале попробовать.
Но процедура проигрывания звука на компьютере, оснащенном трехканальным таймером ВИ53 и контроллером прерываний ВН59, выглядит в Мониторе следующим образом:
- настраиваем таймер на полупериод нужной частоты
- переворачиваем бит порта, к которому подключен излучатель
- периодически опрашиваем признак конца счета таймера
- обратно переворачиваем бит порта с излучателем
- снова сетапим таймер
- опять ждем конца полупериода
- заодно декрементим счетчик длительности в регистровой паре
- goto loop
И это не может не вызывать восхищения.
ESC 7 n управляет отображением выводимых на экран символов. Параметр n записывается в рабочую ячейку BFF2h Монитора:
- 0 - выводятся символы латиницы
- 1 - выводятся символы кириллицы
- 2 - символы с кодами 40h..5fh выводятся латиницей, 60h..7fh заглавной кириллицей
А в ESC 9 зачем-то задействуется клавиатура:
http://sensi.org/~tnt23/ok240/esc9.png
...и вывод на принтер :-O
Смутно как-то вспоминается, что в древних CP/M, да наверное и не только в них, можно было включить дублирование всего ввода-вывода на принтер. Делалось это разумеется какой-то интуитивной командой с терминала.
Может быть, это что-то похожее. Только это встроено в биос.
Причем на принтер выводятся последовательности вида
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).[свернуть]
Сериалий, конечно. У Океана же есть сериалий. В принципе к Моторию можно любой адаптер сделать. Нативно он USB через FT232, причем с RTS/CTS.
Это в любом случае аутентично не будет и придется свой софт писать, так что не стоит особенно зарубаться на труъсть отдельных сочленений.
Штатно от ВВ51 выведен nDSR, в нашей реплике также выведен nDTR. CTS и RTS висят в воздухе.
Ок, прикручу пока колесики для транспортировки.
Взять, к примеру, редактор шрифтов ZNG. В нем используется занятный трюк - отключение системного ПЗУ, шуршание в области шрифта, и включение ПЗУ взад.
Я бы понял, если б системное ПЗУ сначала копировалось в теневую память, потом отключалось, и работа продолжалась с доступной для абьюза копией ПЗУ в ОЗУ. Там и шрифты править удобно, и патчить что душе угодно.Код:DI
MVI A,10
OUT 0C1
...
XRA A
OUT 0C1
EI
Но ведь нету этого начального копирования, или я его просто не разглядел.
Спросил у AZMaster, оказалось все просто - отключая ПЗУ, получаем доступ к видео-ОЗУ. В подпрограммах Монитора, естественно, ПЗУ не отключают, а проецируют старшие 32К на младшие для тех же целей.
@b2m, добавь плиз в конфигурацию эмулятора для "Океана" вывод звука:
Код:beep : beep {
input=ppaE0.portC[3]
}
Если я правильно понимаю, то три бита "справа от бипера" - это магнитофонный цап. Но его же можно для звука использовать, там нет каких-то неочевидных ограничений?
И смежный вопрос - программы для обмена с магнитофоном в супер-быстром формате не дошли до наших дней? А если дошли, то где на них можно взглянуть?
Использовать для звука ЦАП можно, только он не заведен на усилитель динамика (что в общем-то правильно).
Про быстрый формат пока ничего не известно.
Т.е. можно подать с магнитофонного выхода океана на звуковой усилитель и слушать.
Вопрос - есть ли памятка по Esc-последовательностям океана? При копании IBASIC составил себе очень краткую по графическим и звуковым, но если уже есть нормальная, то я не хочу дублировать с худшим качеством.
Все награбленное сваливаю сюда - http://sensi.org/~tnt23/ok240/
"Все уже украдено до нас" (с).
Крошечные дополнения/правки, скорее всего связанные с другой версией 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) - параметр длительность, скорее всего, означает "количество колебаний". Я попытался воспользоваться ячейками высоты и длительности для звуков в "Тетрисе" и быстро обнаружил, что чем ниже частота, тем дольше звучит нота.
Про палитру - да, скорее всего так и есть.
Фактически да, это типичная "немузыкальная" процедура, которая годится только бипнуть разок. Причем они легко могли сделать ее музыкальной поменяв таймер и счетчик в регистре местами, т.е. чтобы таймер определял общую длительность, а "просто счетчик" - период. Да и вобще, зачем стрелять из пушки по воробьям, можно было для такой задачи и без таймера обойтись (или лучше отдали бы хоть один канал таймера для звука). Может они хотели сделать процедуру, бипающую одинаково, независимо от частоты процессора, но для простого немузыкального звонка/гудка это смешно, тем более океанов с другими тактовыми не существует.
В принципе, там есть пользовательский канал таймера, у которого клок, гейт и выход выведены на разъем. Ну да чего уж теперь. Вообще к процедуре Beep есть и другие вопросы:
https://zx-pk.ru/threads/29940-raboc...l=1#post993999
Есть редкоземельный клон "Автограф-01", теоретически.
Пишут, что там частота 2.4, т.е. совместимость по частоте бипа не пострадала бы при отказе от таймера для процедуры.
Ну тогда можно считать, что таймером тоже можно издавать звук. В эмуляторе zx для вектора биперный звук надо было снимать с разъема ПУ.
На мой взгляд особого вопроса там нет. Они опираются на это значение, чтобы лишний раз не щелкнуть в магнитофонный выход. Хотя грамотнее было воспользоваться регистром управляющего слова ВВ55 и бипать BSRами через E3h, а не Е2h.
- - - Добавлено - - -
Или можно было прочитать значение из E2, по крайней мере для нижней половины, запрограммированной на вывод, чтение должно дать результат последней записи в порт.
- - - Добавлено - - -
Насчет разъемного таймера для звука я что-то я поторопился. Клок и гейт наружу это слишком сурово, лучше ограничиться для звука бипером и магнитофонным цапом.
Конверснул в режим DDp пару картинок: классических попугаев и исследовательский корабль, раз уж тут океан.
Для удобного запуска в эмуляторе нужно дополнить EMU.ext как написано здесь. После этого можно дропать файлы .ok в окно эмулятора и они запускаются. Но у меня иногда при этом эмулятор вылетает, закономерности не понял. В конфиге с fdd тоже можно запускать, если записать на образ диска и сменить расширение .ok на .com. Для загрузки в реал по последовательному интерфейсу приложены файлы .hex.
Выход из просмотра - нажатие любой клавиши (независимо от конфига).
ivagor, круто. Правда, у меня почему-то попугаи расслоились (wine под Ubuntu).
Вложение 67988
Респекты идут DDp за демонстрацию такого режима. Но конвертировал я сам.
Сделал более корректный вариант, заменил архив с картинками.
- - - Добавлено - - -
Теоретически на океане можно показывать такие картинки с разрешением 512x256, но нужно менять палитру каждую строку. В эмуляторе такое не отладить.
Вложение 67990
Готов потестить на реале.
Совсем вслепую такую программу практически невозможно делать, если только b2m добавит поддержку битов 0 и 1 порта 41h в эмулятор. А ему для этого надо знать, сколько строк в кадре, сколько тактов в строке, где начинаются и кончаются ОХЛ по кадру и строке. Ну и еще, конечно, ему надо захотеть это реализовать.