Приветвствую. Вопрос такой овольно объемный. Разделить можно на 2 части: 1. Программирование текстмоде графики подобно 0x0b800 под досом. Т.е. также хотелось бы, чтобы было 1 байт сам символ, второй байт его атрибут (цвет и прочее). Реально такого же плана сделать ? Либо, если так нельзя, то каким либо другим более-менее универсальным способом работать с текстом в цвете. Простенький пример по выводу пары цветных ascii символов былобы очень кстати. 2. Звук. Каким образом сделать универсальный плэер mp3 (или может уже есть кем нибудь написанный mod/xm плэер), чтобы без проблем работал как и в консоли так и под иксами. Тут я примерный путь вижу - можно взять mpg123 вырезать оттуда декрипт mp3 в raw data и ее уже направлять прямиком на /dev/dsp или /dev/audio (на linuxassembly по этому есть дока). В общем может кто уже в курсе и может подсказать ? Да, имеется ввиду конечно все на асме делать. Какой синтаксис и прочее не важно мне более главное суть. Спасибо за ответы. ps. На край пойдут и любые линки на какинибудь демогрупы которые специализируются на консольных демах по линукс.
2quantum Со звуком разобрался, minifmod вполне хорош. Играет через /dev/dsp, урезается до минимума даже на сях, и вполне можно в асм это все перегнать. В общем со звуком все ясно. Теперь остался вопрос по textmode color графике. Очистку экрана делаю пока через write_stdout esc последовательностями типа .ascii "\033[2J\n\0". В принципе можно наверно и цветность символов также нарулить, но хотелось бы чтонибудь более нормальное. Может есть либа кемнибудь написанная, которая позволяет int 10 и b8000 юзать? Типа эмулятора небольшого килобайт в несколько И хочется сделать, чтобы и в консоли и под иксами было универсально, т.е. ставился какойто режим (допустим 80 на 25 в консоли), а в иксах при запуске окно терминала само раздвигалась на нужный размер В целом, если есть какието примеры, то и на сях пойдет все, потом в асм перегнать не проблема.
Для Win32 есть Console API: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllpr oc/base/console_functions.asp А что такое "под иксами"? LINUX? Так вроде эти системы не универсальны по вводу/выводу.
2all, я же в wasm.unix написал т.е. мне конкретно под linux как я сказал выше нужно. 2asmguru62 за линк спасибо, но это винда. а иксы - xwindow. а винда и линукс само собой не универсальны никак.Да и эти монстрообразные апи килограмные нахер не хочется совсем.. Просто надо чтото типа b800h и int10 .. 2asterix ufmod.zip - это винда и имхо проще с сей самому в асм переделать, чем с виндого асма в линукс тащить.. ps. Вот нашел интересный линк: ftp://ftp.scene.org/pub/parties/2003/0a000h/textmode/fake-loaderbar.tg z работает как и в консоли, 80x25, так и в иксах открывает окно и тоже самое делает в нем. Как так реализовано ? Сижу сейчас дизасмлю, но пока не понял.. Может есть какаято либа/финт на проверку иксы это или консоль ?
kas1e "Может есть какаято либа/финт на проверку иксы это или консоль?" переменная окружения DISPLAY. текстовый режим в линухе. Варианта три: - esc-последовательности + termcap - ncurses - тоже самое но через библиотечный интерфейс, т.е. гораздо удобнее - /dev/vcs* /dev/vcsa*, но это не портабельно, и с правами проблемы (тока из под рута работает).
Недавно тут похожий вопрос был, но про Винду. Так вот NT эмулирует адрес B800h для ДОС-приложений, правда там какие-то тонкости есть. Наверняка и Х-ы делают тоже самое для консольных приложений. Ncurses вроде должно работать, но у меня отложилось в памяти, что под Х-ы это не годится - только под чистую консоль. Но это очень давно было - могу ошибаться. Смотри тексты Midnight Commander-а Он использует разные библиотеки и есть (были) варианты под чистую консоль и под Х-ы.
В свое время интересовался прямым доступом к консоли в linux. Увы, там все очень запущено. В ядро намертво встроена эмуляция терминала vt102, (drivers/char/console.c), причем изменить ее нельзя никак. Никакого промежуточного api (между непортабельным низким уровнем и портабельной эмуляцией терминала) нет. Придется забыть что такое смена шрифтов (в 2.4 вообще был один консольный шрифт на все терминалы), страницы текстовой памяти, и многое другое доступное со времен dos. Эмулятор int 10h кстати есть и зовется он LRMI (Linux Realmode Interface)... Еще, как вариант, можно написать свой драйвер консоли, это уж совсем непортабельно и не так уж и сложно, зато можно вытворять все что угодно. Советую посмотреть на исходники драйвера консоли (лучше чем там нигде esc-последовательности не описаны) и SVGATextMode - если нужны нестандартные режимы типа 100х37... Что касается иксов. Тамошний xterm еще более ограниченный, даже ncurses имеет ограничения при работе под X, так что думаю можно забыть про "прямой доступ" к консоли под X-ами...
Nothing "Увы, там все очень запущено" Ничего там не "запущено". Не надо гнать. esc-последовательноси в досе неудачны, потому как действительно медленнее. В *nix, это быстрее чем любой другой известный мне метод, за счёт уменьшения количества системных вызовов. ncurses работает на xterm не хуже чем на vt102. Он пользует базу данных консоли /etc/termcap, для выяснения конкретных esc-последовательностей, и правильность его работы на терминале типа xterm зависит только от правильности записи в termcap. С дефолтовыми настройками проблемы вылезают только при использовании readline, но readline и curses это независимые либы. А насчёт X. Ничего там не эмулируется. Это система не виндовс и такими глупостями не занимается. Всё гораздо проще. Запускается X сервер, создаёт display. Когда X сервер запускает дочерний процесс, то передаёт в переменной окружения DISPLAY строку идентифицирующую display. Дочерний процесс может её игнорировать, может использовать для подключения к display, а может попытаться найти другой display, это как ему больше нравится. Но портабельны только первые два варианта поведения. GNOME может жить в линуксе и без X, на фреймбуфере. Но, я считаю что это личные проблемы GNOME, и ориентироваться на это не стоит.
Подизасмили с товарищем этот линк который я выше кинул, и реализовано в нем все так: Во первых сразу динамически прилеплена x11 сошка, потом в начале уже проги сомой запускаешь XOpenDisplay, если как говорится отсос - то пользуют /dev/vcsa и /dev/console, а если нет - то открывают xterm с нужными парамтерами и поехали там уже. Только это конечно варинат "иксы 100% стоят"..