Пока решил не заморачиваться с перенаправлением стандартного вывода в консоль (боюсь, что сейчас не хватит теоретических знаний для таких правок в libc). Вместо этого немного расширил базовую библиотеку lua для поддержки функций Колибри. Размер исполняемого файла практически не увеличился (менее чем на килобайт).
Добавил следующие команды, аналогичные системным функциям:
redraw(do) -- перерисовать окно. do= 1 - начать, do=2 - закончить
window(x,y,xsize,ysize,color1,color2,color3) -- определить окно, аналогично системной функции 0
textout(x,y,color,text) -- вывести текст. Здесь text это просто строковая переменная
makebutton(x,y,xsize,ysize,id,color) --определить кнопку с кодом id
event=checkevent() -- проверка событий, в переменной event число, определеяющее тип события
event=waitevent() -- ожидание событий
key=getkey() -- получить код нажатой клавиши
button=getbutton() --получить код нажатой кнопки
Не очень густо, но для простых программ, не использующих графику, хватит.
Полное руководство по lua 4.0
есть тут.
Когда будет настроение, перенесу в Колибри и lua 5.1, тем более формат библиотек незначительно поменялся, то есть эти функции по-прежнему будут доступны.
В архиве скомпилированный интерпретатор lua 4 с поддержкой некоторых функций Колибри, и тестовая программа 1.lua (она рисует окно с кнопкой, и при нажатии на кнопку ее цвет меняется).
Отныне в самой Колибри можно писать программы не только на FASM.
Правда, быстродействие программ на lua хромает, но для brainware достаточно.