URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2679
[ Назад ]

Исходное сообщение
"Вывод текста на экран"

Отправлено Sergey , 18-Мрт-04 07:48 
Всем - отдельный привет!
Кто скажет, как в FreeBSD и Linux осуществить прямой доступ к экрану в текстовом режиме, типа как в MSDOS и PASCAL'е бывало:

Var SC:  ARRAY [1..25,1..80,1..2] OF BYTE ABSOLUTE $B800:0;
    SCH: ARRAY [1..25,1..80,1..2] OF CHAR ABSOLUTE $B800:0;
................
  FOR J := 1 TO 80 DO SCH[Y,J,1] := 'S'; // вывод строки 'SSSSSSSS...
  FOR J := 1 TO 80 DO  SC[Y,J,2] := $4B; // буквы цвета В на красном фоне
Заранее признателен - Сергей.


Содержание

Сообщения в этом обсуждении
"Вывод текста на экран"
Отправлено StatusQuo , 18-Мрт-04 17:20 
Term::ANSIColor

"Вывод текста на экран"
Отправлено Sergey , 19-Мрт-04 07:27 
С цветом понятно, а как текст выводить, по координатам, типа GoToXY и Write на Pascal'e?
Под MSDOS я в 10 лет назад слепил текстовый редактор - помесь KEDIT'a со встроенным редактором Norton Commander'a, в котором есть всё, что нужно, плюс использование цвета и другие прибамбасы, до которых другие догадались после меня, да и то не до всех. Хочу такой же под FreeBSD и Linux.

Заранее признателен - Сергей.


"Вывод текста на экран"
Отправлено StatusQuo , 19-Мрт-04 19:54 
А что за редактор если нге секрет?

Поможет Term::Cap, напр.:

$terminal->Tgoto('cm', $col, $row, *STDOUT);
$terminal->Tputs('dl', $count, *STDOUT);


Еще есть модуль Term-Screen, см. http://www.cpan.org/modules/by-category/08_User_Interfaces/Term/

Там вроде можно такие вещи делать, см. документацию:

=item at(row,col)    

Moves cursor to (row,col) where (0,0) is upper left corner, - if the spot is
illegal does whatever 'cm' in termcap does, since that is what it uses.

<...>

=item puts(str)

Prints $s and returns the screen object. Used to do things like
C<$scr->at(10,0)->puts("Hi!")->at(0,0);>. You can just use
print if you want.


"Вывод текста на экран"
Отправлено Sergey , 20-Мрт-04 06:54 
>А что за редактор если нге секрет?

Дайте мыло, вышлю. занимает всего 1 кластер (32 К), и лет 15-20 назад он бы завоевал мир. Но я опоздал, впрочем, не в первый раз...

А в сакой среде все Ваши тексты? На Перл вроде не похоже, я вообще предпочёл бы на Паскале или Кайликсе. Неужели нет доступа, похожего на MSDOS?


"Вывод текста на экран"
Отправлено StatusQuo , 20-Мрт-04 13:35 
>А в сакой среде все Ваши тексты? На Перл вроде не похоже,

Нет, это именно Перл!
Емейл выслан.


"Вывод текста на экран"
Отправлено vt , 22-Мрт-04 23:07 
>Кто скажет, как в FreeBSD и Linux осуществить прямой доступ к экрану
>в текстовом режиме, типа как в MSDOS и PASCAL'е бывало:
>
>Var SC:  ARRAY [1..25,1..80,1..2] OF BYTE ABSOLUTE $B800:0;
>    SCH: ARRAY [1..25,1..80,1..2] OF CHAR ABSOLUTE $B800:0;
>................
>  FOR J := 1 TO 80 DO SCH[Y,J,1] := 'S';
>// вывод строки 'SSSSSSSS...
>  FOR J := 1 TO 80 DO  SC[Y,J,2] :=
>$4B; // буквы цвета В на красном фоне

Много интересного можно прочитать в man console_codes
(это для linux, для freebsd - не помню, но тоже есть подобный man)
Общая идея - просто посылать определенные esc-последовательности на tty
Безразлично на каком языке


"Вывод текста на экран"
Отправлено jd , 28-Мрт-04 00:42 
библиотека ncurses - то, что вам нужно
правда такой скорости, как при прямом обращении к памяти вы не получите

"Вывод текста на экран"
Отправлено ACCA , 29-Апр-04 00:15 
>Всем - отдельный привет!
>Кто скажет, как в FreeBSD и Linux осуществить прямой доступ к экрану
>в текстовом режиме, типа как в MSDOS и PASCAL'е бывало:

В FreeBSD и Linux это никак нельзя сделать. Ты забываешь о том, что кроме консоли Linux 80x25 существуют ещё telnet, xterm, терминалы на последовательных линиях и печатные машинки IBM. Для краткого ознакомления со списком поддерживаемого оборудования посмотри в файл termcap. Разумеется никакой "видеопамяти" по данным адресам нету.

Новый редактор писать нет никакой необходимости - существует бесконечно расширяемый emacs, а для любителей Norton Commander и medit существует Midnight Commander с его cooledit (AKA mcedit).

Писан он на библиотеке Slang, которую почему-то любят больше, чем ncurses.


Мораль - поставь себе X и не морочь голову. :)