Page 4 of 6

Posted: Sat Apr 15, 2006 6:25 pm
by Mihail
build.bat запускает:
spf4.exe src/gspf.f S" img.asm" TSAVE CR BYE
Это генератор img.asm
img.asm содержит ассемблерный код полученный в результате компиляци
исходных текстов на форте в каталоге src\ .
Форт на форте представляет собой набор форт-определений доступных для вызова в рантайме
форт-системы полученной в результате компиляции.

Т.е. в файл, на пример, KolSPForth.4\src\spf_last.f добавляем строку
: HI ." HILLO!" :
компилилуем систему.
запускаем
набираем spf <вк> для запуска моего форта.
там HI . <вк> - возврат каретки.

Я допустил ошибку
в файле KolSPForth.4\src\compiler\spf_translate.f

Фрагмент

: INCLUDED_ ( i*x c-addr u -- j*x ) \ 94 FILE
BLK @ 0=

Надо заменить на

: INCLUDED_ ( i*x c-addr u -- j*x ) \ 94 FILE
MEBLK @ 0=

К стати, полезно это определение сопоставить с

INCLUDED (c-addr, u -- )

в KolSPForth.4\meforth.asm

ЗЫ: Я хотел для инклюде аллокировать память под исполняемый файл
но системная функция 68 эмулятором не поддерживается.
Я задумал сам определить функцию аллокирования.
Оказалось что нет доступа к памяти эмулятора из приложения.

Posted: Sun Apr 16, 2006 5:44 pm
by andrew_programmer
Я непонял каким образом можно отккрывать фортовские файлы.

Лучшебы конечно делать это припомощи макросов из библиотеки ASCL - opendialog,savedialog.Может реализуете - это ведь недолго.

Posted: Mon Apr 17, 2006 10:48 am
by Mihail
Открывать в смысле редактировать?

Можно редактировать с помощью другого приложения(на пример с помощью tinypad).
Вообще, среду разработки лучше представить в виде внешнего модуля.
В основном, форт-система должна содержать минимум для неограниченного расширения.

Вопрос: в Kolibri есть средства общения между приложениями?

Posted: Mon Apr 17, 2006 11:03 am
by Mihail
http://fpauk.narod.ru/kolspforth.5.rar почти тоже что http://forth.spb.su:8888/KolSPForth.4.rar

в режиме spf, Esc - обратное действие забою.
В смысле, печать забитого символа (и восстановление предыдущей строки).

Posted: Mon Apr 17, 2006 6:36 pm
by diamond
Функция 68? При чем тут она? Динамическое распределение памяти - функция 64 (и ее все три эмулятора поддерживают)

Posted: Mon Apr 17, 2006 6:42 pm
by Иван Поддубный
68ая функция предназначена для выделения физической памяти. Это нужно для драйверов пользовательского режима, например, для AC97 плеера.

Posted: Mon Apr 17, 2006 7:00 pm
by diamond
Поэтому для целей, указанных выше, в форте должна использоваться именно 64-я функция...

Posted: Tue Apr 18, 2006 8:25 pm
by Mihail
Изменение размера памяти приложения, не заменяет выделения памяти.
В очередной версии http://fpauk.narod.ru/kolspforth.7.rar
Для для загрузки файлов с помощью INCUDED расположил буфер 64K
в конец приложения. Если памяти не хватает, увеличиваю размер всего
приложения с помощью 64-ой функции. Но мне может понадобится дополнительная
память для других задач.
Для примитивов теперь использую ассемблер из SMAL32. Он больше
похож на FASM.

Posted: Fri Jul 06, 2007 2:01 pm
by Mihail
Новая версия http://fpauk.narod.ru/kolspforth.9.rar
Приведена в соответствие к Форту в виде драйвера http://fpauk.narod.ru/k_svn.566_src_f.rar

Для работы с файлами использовал 70-ю функцию (без нее было криво). Формат словаря тоже
сделал в соответствии с http://meos.sysbin.com/viewtopic.php?p=12736#12736

Образ дискеты: http://fpauk.narod.ru/k_svn.566_f.rar

Posted: Sun Jul 08, 2007 1:41 pm
by Alver
:?:
Может ли forth создавать полнофункциональные приложения или работает исключительно в режиме текстовых скриптов?
Куда компилируются скрипты, в текущий процесс mefort или в памать драйвера?
Как запускать скрипты?

Скачал дискету - нифига не вьехал.
Примера для запуска не нашел. Запустил 'Mefort' выскреб из KolSPForth.7 примеры meforth_samples, закинул на RD (кстати что это за убогие версии Kfar и KFM при новом ядре:P), как запускать не понял :? , начал эксперименты: пишу exampl.f - выдает ошибку -2003, пишу S" /rd/1/example.f" INCLUDED - отвечает INCLUDEDERR=5 :roll: , лезу внутрь - в модуле menuet.f включается какой то файл '1st.4th' где взять непонятно.
Нужна хотябы минимальная инфа по основным командам.
И желательно бы сделать запуск fort-приложений по клику в kfar и kfm.

Posted: Mon Jul 09, 2007 1:50 pm
by Mihail
Alver wrote: Может ли forth создавать полнофункциональные приложения или работает исключительно в режиме текстовых скриптов?
Можно скомпилированный скрипт представить в ассемблерном виде. Так как я это сделал для создания
форт-систем для Колибри. Программа типа дизассемблера создает модуль img.asm, который подключается
к базовой ассемблерной программе-оболочке.
Куда компилируются скрипты, в текущий процесс mefort или в памать драйвера?

Как и раньше, в конец программы отмеченной значением литерала CTOP . Смотри конец файла meforth.ASM .
У каждой форт-приложения должен быть свой кодофайл. Однако, я бы хотел, чтобы тело форт-драйвера
могло быть доступно из каждого приложения для чтения и передачи управления.

В драйвере под кодофайл отведен массив : в drivers\forth\amain.asm
CTOP DB 0x10000 DUP (?)

Думаю сделать полный доступ к форт-драйверу во время работы системы. Чтобы можно было интерактивно капаться
в ядре во время его работы (для суперпользователей).
Как запускать скрипты?
В командной строке набираешь его имя. Вообще, изначально, Форт это просто тупой исполнитель последовательности
слов-команд разделенных пробелами.

Скачал дискету - нифига не вьехал.
Примера для запуска не нашел. Запустил 'Mefort' выскреб из KolSPForth.7 примеры meforth_samples, закинул на RD
Это примеры от willow для его Форта в KolSPForth.7 были 2-а Форта в одном модуле. В http://fpauk.narod.ru/kolspforth.9.rar
от willow форта осталось только запуск и пользовательский интерфейс. У меня пока, до примеров руки не дошли.
Вообще, вызов системных функций производится командами SYS1 ... SYS6 фаил src\KOL\spf_kol_sys.f
В остальном должна быть совместимость с СПФ4 http://spf.sourceforge.net/
Примерами могут служить также, исходные тексты самой системы. Форт на форте представляет собой набор тех-же
определений, которые можно заново переопределить в рантайме системы.
Однако, для переопределения примитивов потребуется предворительно загрузить форт-ассемблер.
пишу S" /rd/1/example.f" INCLUDED
Чтобы не набирать в командной строке, можно эту строку добавить в /sys/INIT.F
Комматда AUTOEXEC запускает этот файл при запуске форт-системы.
Я упустил один момент. Количество одновременно открытых файлов у меня
всего 2 и вложенность INCLUDED соответственно такая-же.
Нужно увеличить константу MAX_OPEN_FILES (файл src\KOL\spf_kol_io.f ) и пересобрать систему.
И желательно бы сделать запуск fort-приложений по клику в kfar и kfm.
Думаю добавить к системному меню. Иконку тоже не помешало-бы.

Posted: Sat Aug 18, 2007 5:16 pm
by Mihail
http://fpauk.narod.ru/kolspforth11.rar - образ загрузочного диска с примерами для Форта

С новыми версиями

http://fpauk.narod.ru/kolspforth11.rar - форт как приложение
http://fpauk.narod.ru/k_svn.605_src_f.rar - форт в виде драйвера

Posted: Sat Aug 18, 2007 7:05 pm
by vectoroc
первую ссылку я так понимаю не ту дал :)
http://fpauk.narod.ru/kolforimg.rar

Re: Forth

Posted: Sun May 08, 2011 3:55 pm
by Eruman
Интересно, Форт прижился в Колибри? Продолжение есть?

Re: Forth

Posted: Sun May 08, 2011 9:11 pm
by SoUrcerer
Как видите, не прижился. Хотя результаты какие-то вроде были.
Если вы программируете на Forth - у вас есть все шансы портировать его для Колибри. Пример: мне нужен был LUA - я портировал LUA.