Просмотр полной версии : 8-битный дисплейный модуль
Немножко адаптировал конструкцию Гранта Сирла для параллельной шины и встроил в свою конструкцию (http://qsl.net/rw6hrm/html/z80.htm). Вещь получилось достаточно простая, может быть подключена к любой восьмибитной конструкции (к тому же ЮТ-88), а также к LPT любого компа. Кратко-сумбурное описание тут, http://qsl.net/rw6hrm/html/8bitdisp.htm Пока ещё не поддерживается кириллица, но ковыряю исходники для переделки под альтернативную кодировку (СР866 емнип) насколько позволяет время. Прошу не рассматривать как окончательный вариант, а только как направление движения ;)
rw6hrm, Бейсик и двустрочник - наше всё! :)
http://savepic.ru/10986246.jpg
двустрочник
Хорошо, но мало! ;)
...тут злая мысль была, чтобы именно эту конструкцию к ЮТу подключить, а то там монстр прям получается в оригинале...
Удивительное, вообще говоря, ходит рядом. Я как раз второй день прикидываю, как мне видеоадаптер из Меги8 прикрутить к плате с 8088. Вариант на TQFP-ПЛИС мне не понравился, эстетика не устраивает. Мега в ДИПе - самое оно.
И тут ты как раз тоже эту тему поднял :)
- - - Добавлено - - -
тут злая мысль была, чтобы именно эту конструкцию к ЮТу подключить
Хорошая мысль. Только уж не к КР580ВМ80, а лучше к КР1821ВМ85А. Оно так сохранит всё антикварное, зато проще с генератором, питанием, и буферами на шинах. Достаточно одной 580ИР82 (1533ИР22).
Кстатеговоря, можно будет обратиться за помощью скомпилировать переработанные исходники для Меги? А то АВРстудио в наличии нет, только в тетрадке перелопачиваю...
Кмк, ютовцы не будут использовать эту схему:), ибо неканонiчно
Я вот не уверен, что не будут. Там схема уже изрядно переделывалась, а тут вырисовывается комп на пяти микросхемах всего....
Да можно, конечно.
А что не поставишь, раз перелопачиваешь? ;)
Перелопачиваются файлы, ответственные за "картинки" символов. Тут всё просто - посмотрел на картинку, нарисовал в клеточках, перевёл в хекс (просто..., проблема со свободным временем). Т.е. основная программа не трогается никоим образом. Ставить прогу и разбираться ради одной компиляции... можно, конечно, но лень же велика и необъятна ;)
shoorick
18.08.2016, 18:24
Кстатеговоря, можно будет обратиться за помощью скомпилировать переработанные исходники для Меги? А то АВРстудио в наличии нет, только в тетрадке перелопачиваю...
AVR-студия целиком не нужна, достаточно avrasm2 и инклуд(ы) под конкретную модельку.
----------
На худой конец можно fasm g применить: у него и такое есть, для больших проектов не порекомендую, но лучше, чем в тетрадке - это однозначно ;)
Andrey_Korabelev
25.08.2016, 15:01
Где можно подробнее узнать про
В помощь ему подключён сдвиговый регистр отображаемого символа D21 (чтобы убрать известный в подобных конструкциях джиттер первой строки формируемого изображения).
Error404
25.08.2016, 15:21
Прелестно! Я это соберу для Юзикса Ориона-ПРО. :) Но есть доп. хотелки, для которых уже нужна Мега32. Оно в исходниках?
Оно в исходниках?
Исходники лежат на странице Гранта Сирла, ссылка в статье была. Оригинал можно использовать без переделки кодовой таблицы.
Где можно подробнее узнать про
Если терпит - буду искать. Давно дело было, кто-то делал однокристальный вывод и как раз жаловался на джиттер, в том числе с картинками и кусками кода. Влёт просто уже не помню...
UPD: что-то было тут, http://www.batsocks.co.uk/readme/art_SerialVideo_3.htm
Я не наблюдаю никаких недостатков в изображении. Всё ровно и красиво... Это всё же от реализации зависит, "я так думаю!"(С)Мимино.
Andrey_Korabelev
26.08.2016, 15:40
...про джиттер было тут, http://www.batsocks.co.uk/readme/art_SerialVideo_3.htm
Ага, значит дело в невозможности(или сложности) обеспечить одинаковое количество тактов AVR на каждую скан-линию, если использовать прерывания. Правда не очень понятно каким образом внешний регистр выруливает ситуацию, ведь его установку надо тоже синхронно производить...
В регистр главное запихнуть байт, после чего он сам будет далее выдаваться, чем разгрузит контроллер, хоть немного. Лучше использовать в качестве внешнего регистра именно ИЕ10, поскольку он синхронный, но , по бедности пойдет и ИЕ9, но тогда можно ожидать разноширинность получаемых точек.
не наблюдаю никаких недостатков в изображении
Это хорошо, вот только повнимательнее надо быть ;), ибо при заполнении всего экрана верхняя строчка слегка подёргивается, это хорошо видно на ЖКИ-ТВ. И чем меньше скорость общения с контроллером, тем подёргивания заметнее. Если смотреть через ТВ-тюнер, то эта железка исправляет полученный сигнал, убирая джиттер. Но в общем согласен - это не влияет на общее состояние дел, конструкция реально кульная ;)
Andrey_Korabelev
27.08.2016, 01:36
...Нахмурило. Не в обиду, но вижу несколько противоречий. Но... Пусть лучше рассудят гуру...
Error404
29.08.2016, 00:42
Задумался на тему что встроенных 2к ОЗУ (на одну экранную плоскость) мне мало.
Интересно, сложно ли перепилить проект под, к примеру, Мегу128 или Мегу32 с внешней памятью (http://www.scienceprog.com/adding-external-memory-to-atmega128/)?
В Меге328 под это (внешнюю память) как я понимаю возможности нет.
CodeMaster
29.08.2016, 21:28
Бейсик и двустрочник - наше всё!
Сначала подумал, что это (http://www.sintech.cn/post%20card/ST-MT35%20DDR2%20DDR3%20memory%20card%20tester.html) миникомп, но это оказался двухдисплейный терминал в PCI. Да, не 8-ми битный, а 32-х, но на вырост может интересно будет ;-)
Прошло два года :v2_dizzy_vodka:, файло доделал. Поскольку Грант Сирл на своей страничке выложил не все нужные для компиляции файлы (понадеялся на новые версии программы у юзверей, а у него стоит AVR Studio 7), то пришлось обратиться к народу и с помощью уважаемого пользователя ВКонтакта Nable80 проблема была решена, за что я публично приношу свою благодарность. Архив прошивки в прицепе.
Итак, что очень неспешно сделано - переделана вторая часть кодовой таблицы на альтернативную кодировку, большей своей частью совместимой с СР866. Можете пользоваться.
Замечание для тех, у кого чешутся ручки, кому не понравится мой шрифт, либо хочется КОИ-ХХ - скачиваете архив со странички Гранта, затем переделываете файлы под названием CGAxxxx.inc под требуемую кодировку или шрифт. Можно использовать два типа шрифтов - альтернативный и КОИ, для этого можно пожертвовать болдом, записав вместо него вторую таблицу. Мало того, можно при старте задать тип таблицы по умолчанию, либо изменив .org'и в начале таблиц, либо поправив несколько строчек в .asm'овском файле (что и как править - читайте на страничке Гранта). Архив переделанных таблиц для опытов также прилагаю (а может я где и скосячил, но не углядел :v2_dizzy_botan: и требуется правка).
Отсутствующий в архиве Гранта заголовочный файл можно скачать тут. (https://raw.githubusercontent.com/DarkSector/AVR/master/asm/include/m328def.inc)
Дошли руки, завёл с новым знакогенератором. Всё нормально, всё работает. Из одного резистора собрал "эмулятор компа", подсоединил давно собранную ASCII-клаву, потыкал символы (защиты от звона пока нет, посему и куча повторов на экране). Можно присоединять к компику, тем более что с этой платы на него пойдут и тактирующие импульсы в 4 МГц.
Разумеется, что если кому мой вариант клавы не нужен, то одну микросхему можно не ставить. А можете обойтись PS/2-ASCII - адаптером, ссылки ранее давались (но у меня 8-битный выход с клавы).
Если у компа свой такт, то минус ещё одна микросхема. Итого получится всего 7 микросхем.
Фоточки:
https://pp.userapi.com/c844724/v844724228/2a3e3/tXFskqYMQOI.jpg
https://pp.userapi.com/c844724/v844724228/2a3ed/gSsYMwF--U8.jpg
Страничку на сайте подновил.
Семь из восьми текстовых режимов (40 символов, нормальный, двойной высоты, лениво было делать;), но он симпатичный), если кому-то ещё эта конструкция интересна:
- 40 символов в строке, жирный (25 строк в экране)
- 40 символов в строке, жирный, двойной высоты (12 строк в экране)
- 40 символов в строке, нормальный
- 80 символов в строке, жирный
- 80 символов в строке, жирный, двойной высоты
- 80 символов в строке, нормальный, двойной высоты
- 80 символов в строке, нормальный
Разумеется, что во время работы мы можем свободно построчно переключать режимы отображения.
Shumadan
21.05.2018, 20:30
Эту штуковину как подцепить к Аюше 6502? Управляющий сигнал с GS1 там отсутствует. Или в видеотерминале подцепить его на минус?
В Аюше свободных чипселектов на D17 начиная с /CS1 и до /CS12, судя по таблице, http://www.qsl.net/rw6hrm/html/6502_sch.htm . Остаётся только выбрать, я бы выбрал /CS12. В этом случае получится адрес BF00H - данные в дисплей (и из клавиатуры), BF01H - проверка регистра занятости дисплея (нажатия клавиши).
Разумеется, что в этом случае придётся делать две правки:
- подпрограммы ввода/вывода символа в дисплейный модуль;
- добавить подпрограмму ввода/вывода в последовательный порт, в том числе и подправить Бейсик (ввести LOAD/SAVE, скажем). Либо, если последовательный порт использоваться не будет, как-то сделать дисковую/карточную память с использованием того же ВВ55.
Но я бы попробовал цеплять эту штуковину не к Аюше, а к ЮТу, но последнего у меня нет ;)
Shumadan
23.05.2018, 14:38
У меня тоже нет ЮТ. Но с ним тоже нужно будет писать подпрограмму.
Откорректировал схему ввода с клавиатуры (хоть это никому и не нужно). Оно было рабочее "в принципе", теперь работает реально, без сбоев и излишних чтений буфера.
По поводу графики. Если кто-то думает, что 160х100 - это мало, то для данного адаптера - это полный экран. Да, "пиксели" получаются жирненькие и сочные. Да, курсор надо перед выводом графики отключать (чего я не сделал, записывая видео).
Ссылка на видео - https://vk.com/doc117527293_468090753
В 40 строке программы как раз и сделан попиксельный вывод полной закраски, а потом и стирания экрана. Середина убыстрена в пять раз, чтобы не было печально смотреть на работу Бейсика ;)
Ничто не мешает, скажем, иметь графику в верхней части экрана, а в нижней - текст. Чуть попозже попробую наваять аналогичную прогу на асме и запустить из-под СР/М. А можно и нарисовать что-нить, но я не кульный маляр ;)
Shumadan
09.06.2018, 23:54
Видео недоступно
Да ладно... Проверил с телефона, планшета и ИЕ8 без реги в ВК - файл скачивается. Ну разве что не скачается у соседей из UA, увы...
Оказывается можно и спрайтиками ворочать, нужно время, чтобы понять и опробовать.
siemensC35
10.06.2018, 10:39
f
Ну разве что не скачается у соседей из UA, увы...
без коментариев
https://s19.postimg.cc/klvohigb3/image.jpg (https://postimg.cc/image/klvohigb3/)
а штука интересная, попала в руки трубка 3ло1и на которой я когда-то видел терминал и вспомнил я тут ЭВМ одного гражданина
здесь трубка не задействована была хотя в то время терминал был бы сопоставми по размерам с этим гробиком
https://s19.postimg.cc/62ojg601r/P5080021a.png (https://postimg.cc/image/62ojg601r/)
можно былобы собирать компьютер аля ЮТ-88 в дипломате
У меня лежит для таких целей микротелевизор типа Юность с кинескопом в 7 см диагональю (на фотке ЮТа из приложения к ЮТу xD как раз такой), но глазята уже не те...
Тут соседи собрались, посмотрели и требуют комп в аренду попробовать написать демку ;)
Shumadan
10.06.2018, 11:33
Да ладно... Проверил с телефона, планшета и ИЕ8 без реги в ВК - файл скачивается. Ну разве что не скачается у соседей из UA, увы...
Оказывается можно и спрайтиками ворочать, нужно время, чтобы понять и опробовать.
С айпада не скачивает. Просмотрел на компе. Получается попиксельно закрашивается каждое знакоместо?
siemensC35
10.06.2018, 11:36
микротелевизор типа Юность с кинескопом в 7 см
11ЛК трубка ? были такие агрегаты типа Электроника-450 и Мара но живьем не видел
Кстати прототип РКшки имел вроде как видеотоновский терминал, интересно было бы это все состыковать для тестов
Получается попиксельно закрашивается каждое знакоместо?
Да, это первое, что пришло мне в голову для проверки. Со "спрайтами" там интересней, но нужно время, чтобы понять и осмыслить. Надо будет перевести на русский документацию для удобства.
siemensC35, именно 450-я моделька лежит. Требует замены электролитов, но ещё живая.
siemensC35
10.06.2018, 12:46
rw6hrm, как по мне так ВЛ-100 еще хороший вариант напоминающий 15иэ , корпус металический, хорошо вписываеться в идеологию
Еще ранние шилялисы 40х тоже были в метале но их днем с огнем
Поскольку дело движется к практическому применению, возникают два взаимосвязанных вопроса. Итак, есть видеоадаптер с разрешением 160х100 в графике, имеющий только команды закрашивания/стирания точек по заданным координатам.
Вопрос первый: по каким формулам рассчитать поточечное рисование линии, окружности и прямоугольника?
Вопрос второй: то же самое, применительно к ассемблеру Z80? ;)
Хочется в имеющуюся версию BBCBASIC'а добавить процедуры рисования применительно к имеющемуся железу. Просто из версии для Z80 графические команды исключены разработчиком, да и не подошли бы они...
Другого Басика просьба не предлагать, ибо именно эта версия настолько заморочена по своим возможностям, что все остальные тупо курят в сторонке.
LeoN65816
16.06.2018, 13:59
Вопрос первый: по каким формулам рассчитать поточечное рисование линии, окружности и прямоугольника?
Алгоритм Брезенхема (https://www.yandex.ru/search/?text=%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D 0%BC+%D0%91%D1%80%D0%B5%D0%B7%D0%B5%D0%BD%D1%85%D0 %B5%D0%BC%D0%B0&clid=9403&lr=11091).
HardWareMan
16.06.2018, 14:00
siemensC35, у ВЛ100 (http://www.rw6ase.narod.ru/00/twcb/elektronika_wl100.html) 16см, у Э-450 (http://www.rw6ase.narod.ru/00/twcb/elektronika450.html) - 11. А у вот у Мары-2 (http://www.rw6ase.narod.ru/00/twcb/mara2.html) всего 8. У меня есть такой, и когда я принес его 20 лет назад в мастерскую где работал, чтобы показать пацанам, они со смехом предлагали померить анодное напряжение обычной Ц-шкой... :)
Алгоритм Брезенхема.
Угу, спасибо, как раз на Коде Розетты нашлось в полном объёме. Спасибо.
Кстати говоря, забыл уведомить: модуль можно подключить не только по 8-битной шине, но по четырёх и двухпроводной шинам (последняя I2C зовётся). Но не думаю, что это кому-нибудь понадобится IRL.
Упс, блин... я-то думаю, почему у меня ESC-последовательности не обрабатываются..., оказывается в обработчике на них стоит заглушка и пока мы не ANSI-совместимы (хотя и декларируемы). Написал автору прошивки, жду ответа...
siemensC35
17.06.2018, 23:35
siemensC35, у ВЛ100 16см, у Э-450 - 11. А у вот у Мары-2 всего 8. У меня есть такой, и когда я принес его 20 лет назад в мастерскую где работал, чтобы показать пацанам, они со смехом предлагали померить анодное напряжение обычной Ц-шкой...
вот самый удобный вариант портативизации слизаный из шарпея каково-то
http://www.rw6ase.narod.ru/00/komb/elektronika8tmb02d.html
я такую руками щупал, но дорого она тогда была
HardWareMan
18.06.2018, 07:59
siemensC35, я такой только на картинках видел. Ну и цитату исправь, а то не понятно .
siemensC35
18.06.2018, 18:39
Ну и цитату исправь, а то не понятно
поправил, кстати есть трубка от Осцилографа где-то таких размеров но задница аля 61ЛК5ц . ожет поробовать терминалировать ее к потрохам ВЛ100/Ц407 или затея марная для терминала ?
HardWareMan
19.06.2018, 07:33
У осциллотрубок отклонение электростатическое. А нужно электродинамическое. Пластины внутри будут мешать. С другой стороны, если доработать модуль развертки, то все получится. ;)
...мож лучше подскажете по теме алгоритм обработчика ANSI-последовательностей?
TomaTLAB
20.06.2018, 00:12
Пластины внутри будут мешать. И с фокусировкой у них не ахти. Без хорошего магнитного экрана луч в кляксу размывает.
siemensC35
29.06.2018, 15:26
А не подскажете если повторять на базе ардуины то поидеи генератор на рассыпушке не делаеться ( в ардуине он там на платке есть свой) и как это дело отвяываеться от клавиатуры непойму ( д3.4 4.3 4.4 2.2 4.1 5.1 убрать ? ) и можно например ИР13 привязать выходя из наличия онных в кармане ?
Если на базе ардуины (если не ошибаюсь - Nano), то программируется внутренний генератор и убираются все бутлоадеры. В этом случае желательно, чтобы ИР10 была из серии 74HCT, иначе напряжения на её раскачку не хватает. Или ставить между атмегой и ИР10 буферный каскад до ТТЛ-уровня. Просто тут косяк был в том, что на 16 МГц генерация встроенного генератора Атмеги была не очень устойчивая и слабая по уровню, рука пролетела - и сорвалось. Или не запустилось при подаче питания. Вообще в первоначальном оригинале Риктора стоял внешний одночиповый генератор, так что проблема, скорее всего, известна, ибо атмега разработана как малопотребляющий чип, не обязанный дополнительно тянуть внешние схемы.
Отвязаться от ненужного - просто не собирать части схемы, обведённые голубым и жёлтым квадратами. Останутся свободные элементы в чипах. Либо на оставшихся элементах ЛА8 и ЛЛ4 сделать аналог одного триггера ТМ2 для экономии (по сути нужен обычный делитель на 2, тактируемый по сбросу).
Входной регистр может быть любой, позволяющий записать и защёлкнуть данные на выходе по высокому уровню.
ИР10 можно заменить на ИР9 (с переделкой ножек), но возможна разноширинность получаемых точек (поскольку ИР9 асинхронная), что повлияет на "красоту" изображения.
- - - Добавлено - - -
( д3.4 4.3 4.4 2.2 4.1 5.1 убрать ? )
Вот как раз на всех них собрано определение занятости видеовыхода. Если чип занят обработкой/выводом изображения, то на выходе Д3.4 при его опросе будет низкий уровень. Т.е., прежде чем кинуть байт в регистр Д7, сначала надо опросить занятость, иначе байт пропадёт.
У меня на Z80 это реализовано примерно так:
conoutB1: IN A,(SIOB_C) ; Читаем статус байт из Д3.4 - D1=1 передача закончена
AND 00000010B ; маска проверки бита 1
JR Z,conoutB1 ; лупим, пока результат маски 0
POP AF ; Вытаскиваем нужный байт из стека
OUT (SIOB_D),A ; Выдаем его в видеоадаптер в Д7
RET
...в общем, народ,... хотел тут запилить вам подарок к НГ, но понял, что поставленная задача на сегодняшний момент не решается, ибо понимания не хватает. А задача в принципе проста - впихать обработчик ANSI последовательностей в Атмегу для более быстрой обработки и освобождения места в биосе процессорной платы, ну и чтоб была некая аппаратная независимость и получился бы однокорпусный железный VT-100 эмулятор дисплея. Может даже ценой исключения из существующей прошивки части (или всех) неиспользуемых знакогенераторов и доп. функций (ну действительно, зачем нужны 40 символов в строке, двойная высота, NTSC-стандарт сигнала, 2/4-битный интерфейс и т.п). Сишный код простого обработчика есть, но вот совместить его с ассемблером основной программы я ниасилил. Мож кто подскажет, как это сделать? Спинным мозгом чувствую, что дело в инклудах, но как...
С цветом пока решать рановато, одной атмегой не обойтись, поэтому это не обсуждаемо.
А задача в принципе проста - впихать обработчик ANSI последовательностей в Атмегу для более быстрой обработки и освобождения места в биосе процессорной платы, ну и чтоб была некая аппаратная независимость и получился бы однокорпусный железный VT-100 эмулятор дисплея
Странно, у Гранта на странице написано, что основные ASCII-последовательности поддерживаются. Я ради интереса качнул сорцы - а там никакой поддержки нет.
PS: А из Аюши их точно надо выпилить, и записать в ПЗУ CP/M BIOS, чтоб ОЗУ не кушала...
У Гранта обработчик АНСИ работает в первом чипе, ответственном за клаву и связь (и вот там-то как раз сорцы на Сях!). В видеочипе свои команды, в которые первый чип и перекодирует АНСИ. В Аюше как раз таки преобразование управляющих кодов и включено в биос (только VT-52), и оно работает, однако 5 МГц Z80 ни в какое сравнение не идут с 16 МГц атмеги, форматированный вывод всё же на глаз подтормаживает, ну и дополнительный килобайт памяти контроллера лишним не будет в случае перекодировки в атмеге. Фишка в том, что в этом случае терминал будет самодостаточным и не требовать каких-либо движений со стороны контроллера, поэтому станет применимым в любой 8-битной конструкции.
Конечно, можно поставить ещё один чип-перекодировщик, но это же не в нашем стиле, верно? ;)
Конечно, можно поставить ещё один чип-перекодировщик, но это же не в нашем стиле, верно?
Конечно. Лично я не вижу абсолютно никаких сложностей впилить обработчик пары-тройки самых популярных ESC' последовательностей в ProcChr.inc (ну типа переместить курсор, очистить экран и что там еще, третье). С виду - все просто как пять копеек, можно сделать. Но я у себя на Аюше спустя полгода пока еще не проверил видеовыход, то есть это хороший показатель, насколько он мне нужен -) Сегодня уже поздновато, а завтра если дела не навалятся можно попробовать, но тестировать придется Вам, у меня Аюша на работе, считает число Пи до миллионного знака -)
считает число Пи до миллионного знака -)
...вах... Потом поделитесь, сколько времени это дело заняло и на каком знаке пошло расхождение ;) Но в соответствующей теме.
Спешить не надо, поскольку надо определиться со списком перекодируемых последовательностей. Стартово можно взять у Гранта, но просятся к добавлению ещё несколько. Второе - там, смотрю, ORG'ами прибиты адреса нахождения знакогенераторов, возможно потребуется их подкорректировать. Или что-то из них убрать, если не будет хватать места. Третье, связанное - если не трогать знакогенераторы, то из текста можно выкинуть переключение в НТСЦ, 4-бит интерфейс и I2C...
Второе - там, смотрю, ORG'ами прибиты адреса нахождения знакогенераторов, возможно потребуется их подкорректировать. Или что-то из них убрать, если не будет хватать места. Третье, связанное - если не трогать знакогенераторы, то из текста можно выкинуть переключение в НТСЦ, 4-бит интерфейс и I2C...
Вообщем, вкурил немного сорцы. Там значит так - во-первых, почти вся свободная SRAM занята. 2000 байт отводится на видео-память, 25 байт отводится на память аттрибутов. Это уже 2025 байт. Всего у атмеги 2048 байт. Оставшиеся 23 байта отводятся под стек. Далее, все рабочие переменные хранятся в регистрах, благо что их 32 штуки, что офигеть как много после x86. Но они вообщем-то все тоже заняты, все 32 регистра. Там есть три регистра или переменных, коли угодно, Temp, Temp1 и Temp2, которые можно использовать не боясь порушить всю остальную логику, но этого по грубым прикидкам маловато для парсера ESC-последовательностей.
Из хорошего - памяти для программы много, чуть меньше половины из 32 Кб свободно, *****кодить можно от души, с размахом, так сказать. Поэтому шрифты нисколько не мешают, можно наоборот туда еще всяких напихать для кучи.
Возвращаясь все-таки к парсеру ESC-последовательностей. Для стека я думаю очень жирно 23 байта, поэтому под себя можно запросто байт 10 отобрать. Этого должно хватить на переменные, и что бы не лезть и не пересекаться с оригинальным обработчиком кодов управления. Еще надо конвертить строковые числа в десятичные, для разбора ESC-установить курсор в X,Y.
Вообщем, с виду то просто, но с нюансами как всегда -)
Парсер для Z80 у меня использует две дополнительные ячейки ОЗУ для VT-52 и три для VT-100, как раз для хранения переменных. А вот стопорнулся как раз с переделкой позиционирования курсора. Если с перекодировкой строки в десятичные сложности не было (в ПЗУ есть кусок аналогичный, использовал его как подпрограмму), то далее пошли нюансы ;). К примеру, установка курсора в домашнее место может быть как Esc[H, так и Esc[0;0H, так и Esc[00;00H, а также f вместо Н. И все варианты нужно предусмотреть. Тут меня и поплющило...
К примеру, установка курсора в домашнее место может быть как Esc[H, так и Esc[0;0H, так и Esc[00;00H, а также f вместо Н
Да это то ничего, подозреваю что еще может быть Esc[12; или Esc[12H и тому подобные приколы. Но, в целом, вроде набросал как мог. Ни о какой культуре и изяществе кода речи не идет, ни о какой оптимизации тоже, это просто должно работать, вот и все. Ассемблер AVR первый раз в жизни вижу, чего вы от меня хотите. Должно работать это:
Esc[Line;ColumnH or Esc[Line;Columnf moves cursor to that coordinate
Esc[J=clear from cursor down
Esc[1J=clear from cursor up
Esc[2J=clear complete screen
Esc[K = erase to end of line
Esc[1K = erase to start of line
Esc[L = scroll down
Esc[M = scroll up
Мог попутать столбцы и колонки в команде установке курсора. Проверять как я уже говорил не на чем, поэтому без претензий -)
Ок, спасибо. Только биос мне надо будет переписать, чтобы выкинуть внутренний обработчик...
UPD. Вчерновую работает. Но койчто надо доделать... Остальное в личке.
может быть переписать модуль на stm32 ? там и частота выше и памяти больше
Анонсирую свою работу по доделке адаптера на ближайшие полгода - использование более "жирного" чипа для цветной картинки. Пока цвет планируется только для отображаемых символов или графических пикселей, без цвета фона. И из-за того, чип выбран ДИПовский (40 ног), он, к сожалению, будет подороже.., но ведь мы платим за видеокарту две трети цены всего компутера? ;)
Error404
07.01.2021, 23:06
У Гранта обработчик АНСИ работает в первом чипе, ответственном за клаву и связь (и вот там-то как раз сорцы на Сях!). В видеочипе свои команды, в которые первый чип и перекодирует АНСИ. В Аюше как раз таки преобразование управляющих кодов и включено в биос (только VT-52), и оно работает, однако 5 МГц Z80 ни в какое сравнение не идут с 16 МГц атмеги, форматированный вывод всё же на глаз подтормаживает, ну и дополнительный килобайт памяти контроллера лишним не будет в случае перекодировки в атмеге. Фишка в том, что в этом случае терминал будет самодостаточным и не требовать каких-либо движений со стороны контроллера, поэтому станет применимым в любой 8-битной конструкции.
Конечно, можно поставить ещё один чип-перекодировщик, но это же не в нашем стиле, верно? ;)
Как вариант, сдернуть (например, из Chibi-term (https://github.com/mastmees/STM32F030F4-VGA/blob/master/STM32F030F4/Firmware/ChibiTerm/ansi.c)) готовую реализацию ANSI/VT52, и уже по аналогии расширить до VT100.
PS. Кажется, вышел некропостинг, попутал январь 2020 с 2021 по привычке. :)
kotsergoff
13.04.2023, 18:53
Все-таки попробую поднять тему :)
Загорелся идеей сваять этот адаптер для своих нужд.
Использую платку ARDUINO Pro MINI как переходник (нету у меня в дипе АТМЕГИ), благо у нее все нужные ноги выведены наружу, только для клока ИР10 кинул перемычку с платы.
С небольшими бубнами с фьюзами и выходным каскадом появилася картинка (ура!). Но... почему-то выход идет в NTSC, в PAL никак не хочет. И резистор на 13 ногу пробовал ставить, и уже в исходнике выбор и установку NTSC закомментировал, без изменений :(
И еще как-будто дрожание по строкам идет (четные-нечетные дублируются)
Телек использую ЖК, он мультисистемный, на обычном чб кадры прыгают, не разберешь текст(оно и понятно, нету в чб поддержки NTSC)
Можете пнуть в каком-нибудь правильном направлении, что может быть?
Исходники смотрел, вроде больше обработки PAL/NTSC не нашел. Но в асме для авр пока еще не очень силен, тока разбираюсь...
Буду благодарен за любую помощь :-)
п.с. когда резистором переключаешь в режим NTSC, картинка вытягивается к верху... а в остальном все также
kotsergoff
14.04.2023, 18:46
сегодня попробовал поменял кварц на проце, откинул клок от ИР10, внешний генератор на 16МГц подключал, все равно телек пишет NTSC, и на китайском чб кадры скачут....
Где же собака порылась? Намекните хотя бы....
<offtop>...хрен зайти на форум из-за этой грёбаной проверки... Всё у нас через задницу делается, как обычно,..</offtop>
Может проблемы от того, что ардуина по своей сути работает на 3.3 Вольта (не ардуинщик, но предположу)? И при запуске программе что-то не нравится, она ж сначала опрашивает пины установок, а потом запускается в майн... И 10 кОм установочных резисторов при старте относятся только к 5-Вольтовой версии контроллера.
ДИПовские чипы, кстати, спокойно покупаются, от 200 руб у кетайцев до 400-450 руб в России.
Но меня больше интересует замена на
lgt8f328p, оно вроде бы по напряжениям совместимо. Но не в дипе...
Не гарантирую, что смогу вновь зайти на форум в ближайшее время, так что дальнейших ответов следует подождать ;)
kotsergoff
15.04.2023, 20:10
\\Может проблемы от того, что ардуина по своей сути работает на 3.3 Вольта (не ардуинщик, но предположу)?\\
От ардуины там только плата, использованная как переходник(я тоже не ардуинщик :-)), чип я запаивал новый(ATMEGA328P TQFP), он 5 вольтовый и питание подается напрямую на него(прозвонил на всякий случай)
\\ И 10 кОм установочных резисторов при старте относятся только к 5-Вольтовой версии контроллера.\\
Резистор она видит, судя по изменению картинки, но ведь по умолчанию, без резистора должен быть PAL, я так понимаю...
\\ДИПовские чипы, кстати, спокойно покупаются, от 200 руб у кетайцев до 400-450 руб в России.\\
У кетайцев долго ждать, и кстати, как-то брали у них, оказались перемаркированные ATMEGA8 :-(, а тут что было в наличии, на том и попытался сделать
Но это ладно, чуть не по теме.. Поищу в дипе, попробую на нем собрать...
Но все равно спасибо!
Так и 328-е попадались с косым ID, вроде работает, но не так, ребята... Почему и посматриваю на лгбт328 xD
UPD. Почти тот же код пробовал на Атмеге32 (переназначал порты) - всё работало идеально ( и 32-я оказалась вполовину дешевле 328-й).
А, а делитель на 8 фьюзами отключали?
kotsergoff
16.04.2023, 10:06
А, а делитель на 8 фьюзами отключали?
Да, конечно. Единственное, шью по ISP, этот фьюз у меня включен
- - - Добавлено - - -
Так и 328-е попадались с косым ID, вроде работает, но не так, ребята...
Да вот, к сожалению 328 у меня одна, проверить больше не на чем :-(
Найду еще, попробую на другом чипе
kotsergoff
22.04.2023, 13:58
В общем купил новую Атмегу в дипе, собрал пока без ир10, только синхра, подключаю к телеку и опять NTSC... :v2_dizzy_facepalm:
А есть разница между 328 и 328Р? У Гранта в схеме указана 328, у вас в схеме стоит 328Р и у меня 328Р. В программере пробовал прошить как 328, он ругается на ID...
Может тут где-то подводный камешек?
- - - Добавлено - - -
По даташиту вроде они одинаковые...
vegapiratradio
22.04.2023, 20:54
А есть разница между 328 и 328Р?
P это pico power т.е. низкое энергопотребление.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot