Просмотр полной версии : Коды терминала УКНЦ
Посоветуйте мануал по работе с терминалом и управляющими кодами (применительно к УКНЦ).
Нашел DECовский user manual на VT52, но там описано мало кодов (управление курсором).
Интересует в первую очередь управление атрибутами и цветами символов (желательно чтобы коды были числовые, а не комбинациями клавиш).
Графический режим...
Посоветуйте мануал по работе с терминалом и управляющими кодами (применительно к УКНЦ).
http://emuverse.ru/wiki/УКНЦ_RAM.LST_app
Почему цвета так кодируются?
В доке написано:
Esc ГРАФ-A (033 241) - установка цвета знакоместа.Предыдущий цвет запоминается.
Esc ГРАФ-A <цвет>
<цвет> --> 0 ... 7. Используются три младших бита.
А на самом деле: <цвет> --> 48.+0 ... 7 (не 32. если считать что это код цифры, а не значение)
А на самом деле: <цвет> --> 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) будет одно и тоже.
На данном ресурсе есть дизассемблированное ПЗУ УКНЦ с комментариями. Смотрите, изучайте, задавайте вопросы.
Подскажите где можно почитать про графический режим терминала УКНЦ?
В "УКНЦ ROM disasm 5" очевидно присутствуют пп линии, бокса и.т.д. но внятного описания ESC последовательностей не нашел.
В "Ресурсах УКНЦ" все сумбурно-недоделано и не совсем о том. (разве что : <33> % ! 0 )
Подскажите где можно почитать про графический режим терминала УКНЦ?
У1.00031-01 90 01. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЛЕКСА ВЫЧИСЛИТЕЛЬНОГО УЧЕБНОГО "ЭЛЕКТРОНИКА МС 0202". РАБОТА С ВНЕШНИМИ УСТРОЙСТВАМИ (https://zx-pk.ru/attachment.php?attachmentid=30072&d=1318865969).
Если для XY в лучшем случае байт выигрывают, то для кода цвета 3 байта- перебор.
получается цвета будут (100,100,40 - 100,100,47)
Почему "Установка индекса цвета для заполнения контура <ИНДЕКС> - ЦЕЛОЕ число от 0 до минус 7"?
В Пп ПЗУ все равно NEG делают:
TST 4(R5)
BGE 144342$
MOV 4(R5),R0
NEG R0
MOV R0,4(R5)
Ради прикола - подсчет АЦЭ
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
В принципе рисует достаточно быстро (я ожидал худшего).
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 её как языком слизало. И не знаю как восстановить обратно :-(
И всё через управляющие коды? То есть, в ПП уже есть графический драйвер, умеющий рисовать линии.
Да. (линии, бокс, заливка, точка).
Возможное применение боксов для рисования менюшек-окошек. Несомненное приемущество - минимум кода при приемлемой скорости.
А спрайты выводить таким макаром не умеет??
Спрайты не умеет, для простых вещей - "рогаликов" можно знакогенератор подменить :)
файл:
https://yadi.sk/d/fB7TmrkNt-7lMg
Лучше выкладывай сразу на образе диска. Ибо народ ленивый (во всяком случае я), и лишние телодвижения по вставлению .sav'а в образ - не стимулируются перспективой посмотреть на линию)
Лучше выкладывай сразу на образе диска.
https://yadi.sk/d/oyAsNVJetOUdpg
Oleg N. Cher
13.03.2020, 15:53
А меня бы больше заинтересовал откомментированный исходник. Если можно. Спасибо.
Выше 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
Паскалем и не нужно увлекаться. Умная библиотека может иметь набор средств для работы со спрайтами, а я вполне осилю её адаптировать для работы из Паскаля, по крайней мере, в нужном мне объёме.
Я не планирую писать аркадных игр. В той, что я задумал, динамика не нужна. Спрайты стираются выводом пустого спрайта поверх. Или один накладывается поверх другого.
Хобот, заделись процедурой попиксельного вывода спрайта.
- - - Добавлено - - -
я пытался ему втолковать, что этого маловатоНу, маловато-немаловато, но начинать с чего-то надо.
Хобот, заделись процедурой попиксельного вывода спрайта.
там жутко не понятный мне ассемблер, копай сообщения автора, есть ещё вариант в исходниках
Lode Runner'а от Никиты! )
там жутко не понятный мне ассемблер, копай сообщения автора, есть ещё вариант в исходниках
Lode Runner'а от Никиты! )
Там все очевидно и у Никиты практически то же самое только на 8 и 16 а не на любой размер спрайта. (Хобот, ты знаешь какой-то другой ассемблер PDP-11?)
Справка: Ассемблер это когда мнемоника=коду операции, а то что ты привык понимать это SYSLIB макроопределения (.TTYIN, TTYOUT), так и до паскаля докатиться можно :)
Oleg N. Cher
14.03.2020, 17:35
Мне там конечно тоже не всё понятно досконально, но я смог заставить это работать из OMSI Pascal. Теперь вот ищу как задать данные спрайта в Паскале.
- - - Добавлено - - -
Там все очевидно и у Никиты практически то же самое только на 8 и 16 а не на любой размер спрайта.Но ширина спрайта же всё равно должна быть кратная восьми? Или необязательно?
- - - Добавлено - - -
есть ещё вариант в исходниках Lode Runner'а от Никиты! )Это видел. Спасибо Никите, для всех его игр доступны исходники. Но какой-то у УКНЦ экран слишком не кратный спековскому. Привыкаю ;-)
Но ширина спрайта же всё равно должна быть кратная восьми?
Естественно, но если будет только точка.. сам подумай минимальный объем данных ты какой прочитаешь?
Oleg N. Cher
14.03.2020, 17:41
Да понятно, что байт. Но мало ли чего там могло быть предусмотрено. Получается, этой подпрограммой спрайт шириной 10 уже не выведешь. Плохо :-(
Почему? Ширина будет просто 2.
- - - Добавлено - - -
Я ж тебе сказал.. что если будет у тебя только одна точка.. то прочитаешь все равно байт.. но выводишь в битплан же тоже байт.. но в этом байте твоя точка.. как так-то, а?
А говоришь, что понял..
- - - Добавлено - - -
Ты зря закакал эту тему.. может такой же "быстроинтеремсующейся зайдет" и не увидит самого главного, а только наш флейм... :(
Oleg N. Cher
14.03.2020, 19:36
Это я закакал? Ну спасибо на добром слове ;-)
Проверю подпрограмму и отпишусь. Про ширину, кратную байту, это было просто предположение.
Это я закакал? Ну спасибо на добром слове ;-)
Проверю подпрограмму и отпишусь. Про ширину, кратную байту, это было просто предположение.
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 точки.
В нем не описаны команды 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, где эти команды (заглушки) использовались?
Возможно, УКНЦ работал терминалом какой-то 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)
Может быть даже, что это уже делали до нас :)
Думаю, это можно исправить, поменяв таблицы перекодировки в памяти ПП (адреса 7234-7773)
Может быть даже, что это уже делали до нас :)
Ну поменяете на строчные и тогда уже заглавные никогда не получите.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot