Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 17, 2024 03:50

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 12:15 
Не в сети

Зарегистрирован: Чт янв 19, 2012 08:35
Сообщения: 11
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Пока что хочу на виндовс реализовать, но много еще не понимаю (
какой коммандой прочитать 4 байта из адреса Х
как передавать строки в API? почитал ANS94ru но там сложновато пока искать ответы на вопросы.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 12:48 
Не в сети

Зарегистрирован: Чт янв 19, 2012 08:35
Сообщения: 11
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
да и еще CELL это 4 байта а как допустим другие размеры указать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 13:15 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Skokov писал(а):
какой коммандой прочитать 4 байта из адреса Х

@ ( addr -> n ) - извлечь данные n с указанного адреса addr
! ( n addr -> ) - сохранить данные n с указанного адреса addr

Skokov писал(а):
как передавать строки в API?

Смотря в каком случае

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 13:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Skokov писал(а):
какой коммандой прочитать 4 байта из адреса Х

Skokov писал(а):
да и еще CELL это 4 байта а как допустим другие размеры указать.

http://sourceforge.net/p/spf/svn/HEAD/t ... format=raw
Starting Forth
Thinking Forth

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 17:10 
Не в сети

Зарегистрирован: Чт янв 19, 2012 08:35
Сообщения: 11
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Про байты адреса и размеры данных кое что понял, а вот строки
Код:
WINAPI: Tcl_FindExecutable tcl86.dll
WINAPI: Tcl_GetNameOfExecutable  tcl86.dll
WINAPI: Tcl_CreateInterp tcl86.dll

Tcl_FindExecutable
Tcl_GetNameOfExecutable 40 TYPE

Tcl_CreateInterp CONSTANT interpr

S" I:/forth/API/hello.tcl" interpr Tcl_EvalFile


Как в этом случае правильно передавать строки?

Tcl_EvalFile(interp, fileName)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 18:19 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
В винапи почти всегда используются AZ-строки:
Код:
Z" I:/forth/API/hello.tcl" interpr Tcl_EvalFile

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 20:06 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Linux Fedora 19
-------------------------

tcl_test.f
Код:
[gena@localhost spf-4.20ok]$ cat tcl_test.f
\ Работа с Tcl 27.09.13 18:34
\ Подключим обработку DLL и SO
REQUIRE CDECL-CALL ~mgw/mgw_dll.f
// С этой библиотекой будем работать
if=W Library" tcl86.dll"    libTcl     // Windows
if=L Library" libtcl8.5.so" libTcl     // Linux
// Найдем адреса нужных нам процедур
Library@ libTcl  1 CDECL-Call" Tcl_FindExecutable"      Tcl_FindExecutable
Library@ libTcl  0 CDECL-Call" Tcl_GetNameOfExecutable" Tcl_GetNameOfExecutable
Library@ libTcl  0 CDECL-Call" Tcl_CreateInterp"        Tcl_CreateInterp
Library@ libTcl  2 CDECL-Call" Tcl_EvalFile"            Tcl_EvalFile
// Загрузим библиотеку в память
LibraryLoad libTcl
// Tcl_FindExecutable(argv[0]);
ARGV @ Tcl_FindExecutable DROP
// printf("\nИмя нашей проги: %s\n", Tcl_GetNameOfExecutable());
CR S" Имя нашей проги: " TYPE Tcl_GetNameOfExecutable DUP STRLENZ TYPE CR
// const interpr = Tcl_CreateInterp();
Tcl_CreateInterp CONSTANT interpr
// int rez = Tcl_EvalFile(interpr, "/home/gena/spf-4.20ok/hello.tcl");
VARIABLE rez S" /home/gena/spf-4.20ok/hello.tcl" DROP interpr Tcl_EvalFile rez !
BYE


hello.tcl
Код:
[gena@localhost spf-4.20ok]$ cat hello.tcl
# Texting Tcl
puts "Hello from Tcl!!!"
[gena@localhost spf-4.20ok]$


Результат работы SPF
Код:
[gena@localhost spf-4.20ok]$ ./spf4 tcl_test.f
ASCIIZ" isn't unique (/home/gena/spf-4.20ok/devel/~mgw/mgw_dll.f)

Имя нашей проги: /home/gena/spf-4.20ok/spf4
Hello from Tcl!!!
[gena@localhost spf-4.20ok]$

Замечания:
1 - Основа, это типы вызовов. WinApi - не везде! Даже в Windows. Обязательно надо разобраться в этом вопросе.
2 - Аргументы. Обязательно смотреть в документации их наличие. Пример на С не показатель того, что их нет.
3 - Asciiz строки проще всего задаются последовательностью S" xxx" DROP
4 - В Windows разбор и подготовку ARGV нужно делать по другому
5 - С++ комментарии определены в ~mgw/mgw_dll.f там же Library@ LibraryLoad



За это сообщение автора mgw поблагодарил: Skokov
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 22:06 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Цитата:
3 - Asciiz строки проще всего задаются последовательностью S" xxx" DROP

Неверно. S" не всегда возвращает строку с нулем на конце. Для az-строк есть более удобное слово Z".

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Пт сен 27, 2013 23:55 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
VoidVolker писал(а):
Цитата:
3 - Asciiz строки проще всего задаются последовательностью S" xxx" DROP

Неверно. S" не всегда возвращает строку с нулем на конце. Для az-строк есть более удобное слово Z".

У меня ...
Windows 7, стандартный SPF
Код:
Microsoft Windows [Version 6.1.7600]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

G:\SPF-420>spf4
SP-FORTH - ANS FORTH 94 for Win95/98/Me/NT/2k/XP/Vista
Open source project at http://spf.sf.net
Russian FIG at http://www.forth.org.ru ; Started by A.Cherezov
Version 4.20 Build 001 at 21.Jan.2009

Z" ABC"
Z" ABC"
^ ERROR #-2003
: gena Z" ABC" ;
: gena Z" ABC" ;
        ^ ERROR #-2003


Fedora 19, стандартный SPF for Linux
Код:
[gena@localhost spf-4.20ok]$ ./spf4
SP-FORTH - ANS FORTH 94 for Linux
Open source project at http://spf.sf.net
Russian FIG at http://www.forth.org.ru ; Started by A.Cherezov
Version 4.20 Build 010 at 12.Jun.2013

Z" ABC"
Z" ABC"
^ -2003 WORD OR FILE NOT FOUND
: gena Z" ABC" ;
: gena Z" ABC" ;
        ^ -2003 WORD OR FILE NOT FOUND


Хотя мысль с Z" интересная. Короче придумать не могу ....
Код:
: Z" [CHAR] " PARSE [COMPILE] SLITERAL STATE @ IF POSTPONE DROP ELSE DROP THEN ; IMMEDIATE


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Сб сен 28, 2013 00:56 
Не в сети

Зарегистрирован: Чт янв 19, 2012 08:35
Сообщения: 11
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Так кое что заработало правда пока в одностороннем порядке
Код:
WINAPI: Tcl_FindExecutable C:\Tcl\bin\tcl86.dll
WINAPI: Tcl_CreateInterp C:\Tcl\bin\tcl86.dll
WINAPI: Tcl_Eval C:\Tcl\bin\tcl86.dll
WINAPI: Tk_Init C:\Tcl\bin\tk86.dll
WINAPI: Tk_MainWindow C:\Tcl\bin\tk86.dll
WINAPI: Tk_MainLoop C:\Tcl\bin\tk86.dll


Tcl_CreateInterp CONSTANT interpr

interpr Tk_Init
interpr Tk_MainWindow

S" package require Tk " DROP interpr Tcl_Eval
S" wm title . " DROP interpr Tcl_Eval
S" proc x {} {exit}" DROP interpr Tcl_Eval
S" button .b -text 132154 -command x" DROP interpr Tcl_Eval
S" pack .b -fill both " DROP interpr Tcl_Eval

Tk_MainLoop


Есть такой вопрос как передавать значение переменной в функцию S"


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Сб сен 28, 2013 09:01 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Skokov писал(а):
Так кое что заработало правда пока в одностороннем порядке
Есть такой вопрос как передавать значение переменной в функцию S"

Eval наверное можно "скормить" всё, а так наверное придётся погрузиться в изучение С TCL API ? (Tcl_SetVar Tcl_GetVar Tcl_LinkVar Tcl_Invoke ...)

P.S. Встретился ещё такой проект Tcl Windows API extension
Код:
Tcl Windows API (TWAPI) расширение предоставляет Tcl привязку к более чем 500 функций в Windows API.

Расширение предоставляет доступ к Windows API на двух уровнях.
Прямой интерфейс для поддерживаемых Windows API предусмотрен где Tcl команды напрямую указывают на окна функции, как описано в Microsoft Windows SDK. Рекомендуемый интерфейс высокоуровневый интерфейс, который является более удобным, мощным и гораздо проще в использовании, чем сырые Windows API.
В сочетании с TCL, TWAPI позволяет написать широкий спектр приложений для Windows, начиная от настольных приложений на веб-серверы запускаются как службы Windows.

Можно также задействовать SPF.dll из TCL


Последний раз редактировалось KPG Сб сен 28, 2013 10:23, всего редактировалось 6 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Сб сен 28, 2013 09:50 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
mgw,
Ctrl+Shif+F:
Код:
Searching 4237 files for ": Z"" (case sensitive)

D:\SP-Forth\devel\~ac\lib\win\com\samples\automation+.f:
    1  REQUIRE :: ~yz/lib/automation.f
    2  WARNING @ WARNING 0!
    3: : Z" POSTPONE " ; IMMEDIATE
    4  REQUIRE STR@ ~ac/lib/str2.f
    5  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo2.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo3.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\cdo4.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\ie.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\outlook.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\outlook2.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\outlook3.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\pits.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~ac\lib\win\com\samples\xml.f:
    3  REQUIRE :: ~yz/lib/automation.f
    4  WARNING @ WARNING 0!
    5: : Z" POSTPONE " ; IMMEDIATE
    6  REQUIRE STR@ ~ac/lib/str2.f
    7  WARNING !

D:\SP-Forth\devel\~af\lib\c\zstring.f:
   64 
   65  \ Создает строку, оканчивающуюся нулем
   66: : Z" ( -->") [CHAR] " PARSE [COMPILE] ZLITERAL ; IMMEDIATE
   67 
   68  \ Создает 0-строку, при этом преобразует ее по C-правилам.

D:\SP-Forth\devel\~mak\LIB\ext\dis486.f:
   54 
   55  [IFNDEF] Z"
   56:  : Z" POSTPONE S" POSTPONE DROP ; IMMEDIATE
   57  [THEN]
   58 

D:\SP-Forth\devel\~nn\lib\az.f:
   13  ; IMMEDIATE
   14 
   15: : Z" [CHAR] " PARSE [COMPILE] ZLITERAL ; IMMEDIATE
   16 
   17  : ZPLACE ( a u buf -- )   SWAP 2DUP + 0 SWAP C! CMOVE ;   

D:\SP-Forth\devel\~yz\lib\common.f:
   84  ; IMMEDIATE
   85 
   86: : Z" [COMPILE] " ; IMMEDIATE
   87 
   88  : ASCIIZ ( z -- ; ->bl)

15 matches across 15 files

Это как бы стандартное слово - просто его надо подключать из внешних библиотек:
Код:
REQUIRE Z" ~af\lib\c\zstring.f

Skokov писал(а):
Есть такой вопрос как передавать значение переменной в функцию S"

В простейшем варианте - в строках размером до 256 байт, можно использовать числовой буфер:
Код:
12345 S>D <# CHAR % HOLD S"  Конец строки. Символ: " HOLDS #S S" Начало строки, число: " HOLDS #> TYPE CR

Либо искать и подключать что-то для работы со строками из ~девел, либо писать своё что-то.Еще могу предложить свои библиотеки - простейший вариант и более новый, но бета-версия.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Сб сен 28, 2013 17:14 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Спасибо VoidVolker :) Убедил, что надо пользоваться Z" Решил я остановится на следующем варианте.
Коротко и ни каких лишних зависимостей.
Код:
: Z" POSTPONE S" STATE @ IF POSTPONE DROP ELSE DROP THEN ; IMMEDIATE

KPG писал(а):
Можно также задействовать SPF.dll из TCL

А как? Пример?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Вс сен 29, 2013 00:56 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
mgw писал(а):
Решил я остановится на следующем варианте.
Коротко и ни каких лишних зависимостей.
Код:
: Z" POSTPONE S" STATE @ IF POSTPONE DROP ELSE DROP THEN ; IMMEDIATE

Еще раз: слово S" не гарантирует наличие нуля в конце строки. Вышеприведенное определение в общем случае некорректно и является костылем. Кроме того, есть коварные винапи вызовы, которые возвращают флаг об успешном своем выполнении при некорректной входящей строке. И в результате можно очень долго ловить плавающие фантомные глюки.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Графика встроенными средствами Forth
СообщениеДобавлено: Вс сен 29, 2013 12:50 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Почему SPF-4.20 не гарантирует в слове S" наличие завершающего нуля? Пожалуйста аргументированный пример.
Если разговор о других фортах, то это совсем другое дело, я и не спорю.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB