Всем - отдельный привет!
Кто скажет, как в 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; // буквы цвета В на красном фоне
Заранее признателен - Сергей.
Term::ANSIColor
С цветом понятно, а как текст выводить, по координатам, типа GoToXY и Write на Pascal'e?
Под MSDOS я в 10 лет назад слепил текстовый редактор - помесь KEDIT'a со встроенным редактором Norton Commander'a, в котором есть всё, что нужно, плюс использование цвета и другие прибамбасы, до которых другие догадались после меня, да и то не до всех. Хочу такой же под FreeBSD и Linux.Заранее признателен - Сергей.
А что за редактор если нге секрет?Поможет 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.
>А что за редактор если нге секрет?Дайте мыло, вышлю. занимает всего 1 кластер (32 К), и лет 15-20 назад он бы завоевал мир. Но я опоздал, впрочем, не в первый раз...
А в сакой среде все Ваши тексты? На Перл вроде не похоже, я вообще предпочёл бы на Паскале или Кайликсе. Неужели нет доступа, похожего на MSDOS?
>А в сакой среде все Ваши тексты? На Перл вроде не похоже,Нет, это именно Перл!
Емейл выслан.
>Кто скажет, как в 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
Безразлично на каком языке
библиотека ncurses - то, что вам нужно
правда такой скорости, как при прямом обращении к памяти вы не получите
>Всем - отдельный привет!
>Кто скажет, как в FreeBSD и Linux осуществить прямой доступ к экрану
>в текстовом режиме, типа как в MSDOS и PASCAL'е бывало:В FreeBSD и Linux это никак нельзя сделать. Ты забываешь о том, что кроме консоли Linux 80x25 существуют ещё telnet, xterm, терминалы на последовательных линиях и печатные машинки IBM. Для краткого ознакомления со списком поддерживаемого оборудования посмотри в файл termcap. Разумеется никакой "видеопамяти" по данным адресам нету.
Новый редактор писать нет никакой необходимости - существует бесконечно расширяемый emacs, а для любителей Norton Commander и medit существует Midnight Commander с его cooledit (AKA mcedit).
Писан он на библиотеке Slang, которую почему-то любят больше, чем ncurses.
Мораль - поставь себе X и не морочь голову. :)