--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

Паскаль. Программирование консоли.

4
11
С друзьями на NN.RU
В социальных сетях
Поделиться
undefined
29.03.2008
Народ, подскажите плиз, как на Паскале читать и писать напрямую в экранный буфер?
Естественно, ТурбоПаскаль и DOS - отстой полный, я имею в виду FreePascal под FreeBSD. Есть мысль немного переписать их гунявную FreeVision - в частности переделать её так, чтобы проги можно было писать в любой кодировке, а не только в cp866.
Сами библиотеки лопатить - удовольствие ниже среднего, ИМХО проще переписать стандартную функцию WriteBuf, наследуемую всеми объектами.
Сырцы кто-нить лопатил?
Stinky
29.03.2008
Папрямую в память? В нормальной системе от непривелигированного пользователя?
Мнэээ... А так бывает?

Можно, наверное, попробовать ncurces прикрутить.
undefined
30.03.2008
Stinky писал(а)
Напрямую в память? В нормальной системе от непривелигированного пользователя?
Мнэээ... А так бывает?
Ну в виндовой консоли такая шняга точно работает. Могу на Borland Pascal написать...
Фишка в том, что в винде консоль от юзверя работает.
И в никсах, как я понимаю - тоже нечто подобное. Процесс getty запускается, аутентифицирует пользователя и запускает дочерним процессом терминал с настройками из termcap...

Вот как-то так... Ну курсор же можно позиционировать... Функция GotoXY из модуля Crt работает прекрасно.

Порылся в сырцах, нашёл что-то... Но не понял, на хрена после обновления буфера (даже если изменился один символ) делать UpdateScreen... И как сохранить старый экран - тоже не понял... И как получить количество знакомест по горизонтали и вертикали (есть вариант, что прога будет запускаться в xterm)....

Пока курю мануалы.
blizzard
01.04.2008
В добавление к сказанному внизу - смотрите FreeVision аналог объекта (класса) TView в TurboVision - там собрано все что касается визуальных свойств. Соответсвенно UpdateScreen - туда же. Она не умеет отрисовывать 1 знакоместо (если конечно это не instance размером 1х1, да и то не факт).
Stinky
29.03.2008
Абажжи. А там точно cp866?
У них в вики нашел вот это
wiki.freepascal.org/Terminal_%26_Fonts
Там пишут про какое-то хитрое использование шрифтов.

В гугле пишут, что на данный момент у FV с русским все плохо по определению.
undefined
30.03.2008
Объясняю популярно. Пока они поддерживают только cons25, с которым априори идёт только 866-й шрифт. А если юзать cons25r и шрифт koi8-r соответственно - c этим у FreeVision облом полный :(
blizzard
31.03.2008
Перекодировка набора русских символов [А-Я][а-я] при выводе из поддерживаемой CP в целевую CP не поможет ? Реализованная внутри WriteBuf ?
undefined
01.04.2008
Именно эту перекодировку и хочу реализовать.
Там же кроме этого имеется WriteLine и WriteChar, это смотреть надо.
blizzard
01.04.2008
Если я все правильно понимаю, то FreeVision - это портированная под FPC TurboVision. В свое время пришлось с ней плотно поработать, так вот, там вывод наружу библиотеки производится одной процедурой (т.е. WriteXXX на нее завязаны). Соответственно там и надо делать перекодировку.
Я1
31.03.2008
Где то была загрузка кириллицы в EGA-RAM. Состряпал на ассемеблере, Паскаль вроде асс-овские вставки должен кушать, Турбо_С точно ест. При смене видеорежима всё ессно слетает.
undefined
01.04.2008
Не забываем про то, что в FPC 32-битные указатели. То есть при работе под юнихом может и не заработать. Кроме того, FPC поддерживает три формата ассемблера и насколько я помню, MASM к ним не относится.
Хотя, как вариант...

Трабл ещё в том, что в никсах и так используются шрифты cp866 - там ставится прога, переводящая эти шрифты из исходной кодировки в экранную. Параметр screenmap.
/etc/rc.conf:
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
keymap="ru.koi8-r.win"
scrnmap="koi8-r2cp866"
moused_enable="NO"
Вот как-то так.
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Форум Тема (Автор) Последний ответ Ответов
Материнские платы на запчасти и не только

Материнские платы на запчасти и не только Материнские платы и другие комплектующие Отправка в регионы после оплаты. Транспортной...
Цена: 3 000 руб.

Оперативная память Corsair XMS3 CMX8GX3M2A1600C9

Оперативная память Corsair XMS3 CMX8GX3M2A1600C9 Отправка в регионы после оплаты. Продаются сразу обе. Цена за обе 2000 руб....
Цена: 1 000 руб.

Сетевой фильтр APC Surge Arrest

Сетевой фильтр APC Surge Arrest для радиолюбителя.и не только Отправка в регионы после оплаты. ЦЕНА 3000 руб. В рабочем состоянии....
Цена: 3 000 руб.

Принтер лазерный HEWLETT PACKARD HP-6L

Принтер лазерный HEWLETT PACKARD HP-6L Отправка в регионы после оплаты. 3штуки БУ. Внешний вид из магазина простояли на складе...
Цена: 4 500 руб.