Вход

Просмотр полной версии : Коды терминала УКНЦ



S_V_B
29.02.2020, 17:35
Посоветуйте мануал по работе с терминалом и управляющими кодами (применительно к УКНЦ).
Нашел DECовский user manual на VT52, но там описано мало кодов (управление курсором).

Интересует в первую очередь управление атрибутами и цветами символов (желательно чтобы коды были числовые, а не комбинациями клавиш).
Графический режим...

Alex_K
29.02.2020, 17:39
Посоветуйте мануал по работе с терминалом и управляющими кодами (применительно к УКНЦ).
http://emuverse.ru/wiki/УКНЦ_RAM.LST_app

S_V_B
01.03.2020, 07:29
Почему цвета так кодируются?
В доке написано:

Esc ГРАФ-A (033 241) - установка цвета знакоместа.Предыдущий цвет запоминается.
Esc ГРАФ-A <цвет>
<цвет> --> 0 ... 7. Используются три младших бита.
А на самом деле: <цвет> --> 48.+0 ... 7 (не 32. если считать что это код цифры, а не значение)

Alex_K
01.03.2020, 10:15
А на самом деле: <цвет> --> 48.+0 ... 7 (не 32. если считать что это код цифры, а не значение)

; П/п обработки Esc Граф-A
116066$:ADD @#23176,PC ; Установлен режим отмены ?
BR 116102$ ; Нет
MOV 42(R5),R0 ; R0 = предыдущий цвет знакоместа
BR 116120$
116102$:CALL 110762$ ; Прочесть символ
BIC #177770,R0
ASL R0
MOV 113512$(R0),R0 ; R0 = код фонового цвета
116120$:MOV R0,@#177020 ; Положить номер фон. цвета в рег. кода фона
MOV R0,@#177022
116130$:MOV 40(R5),42(R5) ; Запомнить предыдущий цвет знакоместа
MOV R0,40(R5) ; Сохранить номер цвета знакоместа в ТВ
RETURN
Особенностью п/п 110762 является то, что если запрещено чтение управляющих символов (коды 0-31.), то они сразу исполняются. Потому в качестве кодов используются три младших бита от прочитанного символа, диапазон от 32 до 255. Потому и пробел (код 32) и ноль (код 48) будет одно и тоже.

На данном ресурсе есть дизассемблированное ПЗУ УКНЦ с комментариями. Смотрите, изучайте, задавайте вопросы.

S_V_B
11.03.2020, 20:52
Подскажите где можно почитать про графический режим терминала УКНЦ?
В "УКНЦ ROM disasm 5" очевидно присутствуют пп линии, бокса и.т.д. но внятного описания ESC последовательностей не нашел.
В "Ресурсах УКНЦ" все сумбурно-недоделано и не совсем о том. (разве что : <33> % ! 0 )

Alex_K
11.03.2020, 21:01
Подскажите где можно почитать про графический режим терминала УКНЦ?
У1.00031-01 90 01. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЛЕКСА ВЫЧИСЛИТЕЛЬНОГО УЧЕБНОГО "ЭЛЕКТРОНИКА МС 0202". РАБОТА С ВНЕШНИМИ УСТРОЙСТВАМИ (https://zx-pk.ru/attachment.php?attachmentid=30072&d=1318865969).

S_V_B
12.03.2020, 14:57
Если для XY в лучшем случае байт выигрывают, то для кода цвета 3 байта- перебор.

получается цвета будут (100,100,40 - 100,100,47)

S_V_B
12.03.2020, 18:13
Почему "Установка индекса цвета для заполнения контура <ИНДЕКС> - ЦЕЛОЕ число от 0 до минус 7"?
В Пп ПЗУ все равно NEG делают:

TST 4(R5)
BGE 144342$
MOV 4(R5),R0
NEG R0
MOV R0,4(R5)

S_V_B
12.03.2020, 20:25
Ради прикола - подсчет АЦЭ
https://pic.maxiol.com/thumbs2/1584033658.630666996.20200312232020.png (https://pic.maxiol.com/?v=1584033658.630666996.20200312232020.png&dp=2)
https://yadi.sk/d/zAgygU3bdRcfIQ

S_V_B
13.03.2020, 14:45
В принципе рисует достаточно быстро (я ожидал худшего).
https://pic.maxiol.com/thumbs2/1584095041.1388899422.20200313162149.png (https://pic.maxiol.com/?v=1584095041.1388899422.20200313162149.png&dp=2)

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

файл:
https://yadi.sk/d/fB7TmrkNt-7lMg

Oleg N. Cher
13.03.2020, 15:31
Это всеми восемью цветами? Круто. Да, всё довольно быстро рисуется. Линии, как я понимаю, за пределы экрана выходить не могут. И всё через управляющие коды? То есть, в ПП уже есть графический драйвер, умеющий рисовать линии. А спрайты выводить таким макаром не умеет??

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

Кстати, удивило, что есть служебная надпись Лат. В моих ковыряниях с CGLIB её как языком слизало. И не знаю как восстановить обратно :-(

S_V_B
13.03.2020, 15:40
И всё через управляющие коды? То есть, в ПП уже есть графический драйвер, умеющий рисовать линии.
Да. (линии, бокс, заливка, точка).

Возможное применение боксов для рисования менюшек-окошек. Несомненное приемущество - минимум кода при приемлемой скорости.


А спрайты выводить таким макаром не умеет??
Спрайты не умеет, для простых вещей - "рогаликов" можно знакогенератор подменить :)

Titus
13.03.2020, 15:49
файл:
https://yadi.sk/d/fB7TmrkNt-7lMg
Лучше выкладывай сразу на образе диска. Ибо народ ленивый (во всяком случае я), и лишние телодвижения по вставлению .sav'а в образ - не стимулируются перспективой посмотреть на линию)

S_V_B
13.03.2020, 15:52
Лучше выкладывай сразу на образе диска.

https://yadi.sk/d/oyAsNVJetOUdpg

Oleg N. Cher
13.03.2020, 15:53
А меня бы больше заинтересовал откомментированный исходник. Если можно. Спасибо.

S_V_B
13.03.2020, 16:23
Выше Alex_K, выкладывал замечательный букварь:
https://zx-pk.ru/threads/31436-kody-terminala-uknts.html?p=1050657&viewfull=1#post1050657

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

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

немного не по теме:
Вы с Хоботом зациклились с выводом спрайта из паскаля, я пытался ему втолковать, что этого маловато в итоге он меня обозвал тупым прапорщиком который не понимает его "высоких целей".
Задумайся на минутку, если ты выведешь спрайт то тебе его нужно будет как минимум стереть (те. нужно хранить маску предыдущего сдвига спрайта).
Если будешь выводить и стирать в разнобой - будет омерзительное мырганье. (нужно привязаться к КСИ и желательно сделать диспетчер вывода спрайтов).
В итоге все вытекает в полноценную библиотеку которую никто кроме вас писать не будет (паскалем никто не увлекается).

Oleg N. Cher
14.03.2020, 07:39
Паскалем и не нужно увлекаться. Умная библиотека может иметь набор средств для работы со спрайтами, а я вполне осилю её адаптировать для работы из Паскаля, по крайней мере, в нужном мне объёме.

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

Хобот, заделись процедурой попиксельного вывода спрайта.

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


я пытался ему втолковать, что этого маловатоНу, маловато-немаловато, но начинать с чего-то надо.

hobot
14.03.2020, 16:53
Хобот, заделись процедурой попиксельного вывода спрайта.
там жутко не понятный мне ассемблер, копай сообщения автора, есть ещё вариант в исходниках
Lode Runner'а от Никиты! )

S_V_B
14.03.2020, 17:06
там жутко не понятный мне ассемблер, копай сообщения автора, есть ещё вариант в исходниках
Lode Runner'а от Никиты! )

Там все очевидно и у Никиты практически то же самое только на 8 и 16 а не на любой размер спрайта. (Хобот, ты знаешь какой-то другой ассемблер PDP-11?)
Справка: Ассемблер это когда мнемоника=коду операции, а то что ты привык понимать это SYSLIB макроопределения (.TTYIN, TTYOUT), так и до паскаля докатиться можно :)

Oleg N. Cher
14.03.2020, 17:35
Мне там конечно тоже не всё понятно досконально, но я смог заставить это работать из OMSI Pascal. Теперь вот ищу как задать данные спрайта в Паскале.

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


Там все очевидно и у Никиты практически то же самое только на 8 и 16 а не на любой размер спрайта.Но ширина спрайта же всё равно должна быть кратная восьми? Или необязательно?

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


есть ещё вариант в исходниках Lode Runner'а от Никиты! )Это видел. Спасибо Никите, для всех его игр доступны исходники. Но какой-то у УКНЦ экран слишком не кратный спековскому. Привыкаю ;-)

S_V_B
14.03.2020, 17:37
Но ширина спрайта же всё равно должна быть кратная восьми?
Естественно, но если будет только точка.. сам подумай минимальный объем данных ты какой прочитаешь?

Oleg N. Cher
14.03.2020, 17:41
Да понятно, что байт. Но мало ли чего там могло быть предусмотрено. Получается, этой подпрограммой спрайт шириной 10 уже не выведешь. Плохо :-(

S_V_B
14.03.2020, 19:02
Почему? Ширина будет просто 2.

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

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

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

Ты зря закакал эту тему.. может такой же "быстроинтеремсующейся зайдет" и не увидит самого главного, а только наш флейм... :(

Oleg N. Cher
14.03.2020, 19:36
Это я закакал? Ну спасибо на добром слове ;-)
Проверю подпрограмму и отпишусь. Про ширину, кратную байту, это было просто предположение.

S_V_B
14.03.2020, 20:07
Это я закакал? Ну спасибо на добром слове ;-)
Проверю подпрограмму и отпишусь. Про ширину, кратную байту, это было просто предположение.
Oleg N. Cher, пожалуйста сделай новую тему - " пытаюсь написать игру на паскале на УКНЦ"... и все вопросы задавай там.. просто из -за особенностей данного форума, все крупицы знаний.. тонут в кубометрах бесполезного говна.. в (данной теме....... я задал вопрос... и нашел ответ, спасибо ALEX_K...и на этом тема должна остановиться и даже поисковик ее найдет. и ВСЕЕЕЕЕЕ)

shattered
07.12.2024, 16:05
У1.00031-01 90 01. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЛЕКСА ВЫЧИСЛИТЕЛЬНОГО УЧЕБНОГО "ЭЛЕКТРОНИКА МС 0202". РАБОТА С ВНЕШНИМИ УСТРОЙСТВАМИ (https://zx-pk.ru/attachment.php?attachmentid=30072&d=1318865969).

В нем не описаны команды MV, MM, RU, RD, UE, UD, которые не делают ничего полезного -- видимо, они были в предыдущей версии прошивки (прототипе?)

Разрешение по вертикали -- 264 точки.

Alex_K
08.12.2024, 16:45
В нем не описаны команды MV, MM, RU, RD, UE, UD, которые не делают ничего полезного -- видимо, они были в предыдущей версии прошивки (прототипе?)
Графические команды УКНЦ делали по аналогии с командами терминалов Tektronix, например 41xx.
Команда <Esc>MV - SET LINE STYLE. В УКНЦ устанавливает переменную LType - тип линии. Нигде не используется.
Команда <Esc>MM - SET MARKER TYPE. В УКНЦ устанавливает переменную MType - тип маркера. Нигде не используется.
Команда <Esc>RU - BEGIN PIXEL OPERATIONS. В УКНЦ не реализована, стоит заглушка.
Команда <Esc>RD - DEFINING SURFACES. В УКНЦ не реализована, стоит заглушка.
Команды <Esc>U* - это свои УКНЦ-шные. UD и UE не реализованы, стоит заглушка.

В прототипе по известным прошивкам 135-137 были реализованы команды графического терминала: LI, ML, MV, MM, TD, UA, UF, UG, UH, UI. При этом команды LI, TD, MV и MM устанавливают переменные, которые нигде не используются.

shattered
08.12.2024, 19:03
Возможно, УКНЦ работал терминалом какой-то CAD, где эти команды (заглушки) использовались?

Alex_K
08.12.2024, 19:16
Возможно, УКНЦ работал терминалом какой-то CAD, где эти команды (заглушки) использовались?
Нет. Просто не реализовали. Много чего хотели и не сделали. В ТО во всяком случае описан и генератор звукового сигнала, параметры передаются через канал К1. Этого нет. Так же описано, что для текстового терминала команды передаются через К0, а для графического - через К1. Так было в прототипе, а в современной УКНЦ всё идёт через К0.

shattered
10.12.2024, 21:35
Vim в УКНЦ смотрится забавно, хотя с цветами путаница (по документации vim должен уметь в терминалы с 8 цветами).

https://zx-pk.ru/attachment.php?attachmentid=81658&d=1733855582

Работать, впрочем, неудобно (верхний регистр по умолчанию итп)

81658

SuperMax
14.12.2024, 07:50
Вообще, для УКНЦ есть догружаемый модуль VT200, который позволяет включить поддержку VT200
как следствие прекрасно работает ADOS, РыжовКоммандер KEY100 и все остальные программы с КОИ8

см https://forum.maxiol.com/index.php?s=&showtopic=4787&view=findpost&p=51022

shattered
04.01.2025, 15:23
Работать, впрочем, неудобно (верхний регистр по умолчанию итп)

Думаю, это можно исправить, поменяв таблицы перекодировки в памяти ПП (адреса 7234-7773)

Может быть даже, что это уже делали до нас :)

Alex_K
04.01.2025, 20:52
Думаю, это можно исправить, поменяв таблицы перекодировки в памяти ПП (адреса 7234-7773)

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