Forth http://www.fforum.winglion.ru/ |
|
QUARK-ую http://www.fforum.winglion.ru/viewtopic.php?f=23&t=2907 |
Страница 3 из 5 |
Автор: | VoidVolker [ Вт янв 29, 2013 09:30 ] |
Заголовок сообщения: | Re: QUARK-ую |
Код: SMARTSTRING OFF " string" Код: SMARTSTRING ON
"string" |
Автор: | Hishnik [ Вт янв 29, 2013 13:58 ] |
Заголовок сообщения: | Re: QUARK-ую |
admin from eepc писал(а): а выключать его как? SMARTSTRING OFF |
Автор: | kzagradskiy [ Сб окт 10, 2015 21:08 ] |
Заголовок сообщения: | Re: QUARK-ую |
Hishnik писал(а): WingLion писал(а): TIMER-INTERVAL ? может, чего неправильно делаю? TIMER_INTERVAL Наверное, надо алиас сделать, часто ошибки из-за этого. Не надо "алиас", надо документацию подправить. В начале раздела "2. Взаимодействие с программным окружением" перед скриншотом Proton-а есть такой текст: Код: При работе регулярно вызывается векторное слово <TIMER>, интервал вызова которого задается системной переменной TIMER-INTERVAL (в миллисекундах). Хотя дальше в таблице форт-слов Quark-а написано: Код: TIMER_INTERVAL 4 Интервал вызова векторного слова <TIMER> То есть, в начале "TIMER-INTERVAL", а потом "TIMER_INTERVAL" сразу опечатка в глаза не бросается. От сюда и регулярные ошибки у пользователей. Уважаемый Hishnik сделайте ревизию документации, добавьте пару простеньких примеров. Все будут рады. Либо сделайте документацию в виде Wiki на сайте -- пользователи сами ее дополнят/исправят. |
Автор: | Hishnik [ Вс окт 11, 2015 01:47 ] |
Заголовок сообщения: | Re: QUARK-ую |
kzagradskiy писал(а): То есть, в начале "TIMER-INTERVAL", а потом "TIMER_INTERVAL" сразу опечатка в глаза не бросается. От сюда и регулярные ошибки у пользователей. Уважаемый Hishnik сделайте ревизию документации, добавьте пару простеньких примеров. Все будут рады. Либо сделайте документацию в виде Wiki на сайте -- пользователи сами ее дополнят/исправят. Ок, сейчас запланирую себе. Обновление документации дело хорошее, насчет wiki надо подумать. Это надо организовывать и поддерживать... вроде бы есть раздел форума для такого, куда можно выкладывать примеры. С wiki, боюсь, получится лоскутное одеяло. |
Автор: | VoidVolker [ Вт окт 13, 2015 19:38 ] |
Заголовок сообщения: | Re: QUARK-ую |
Hishnik писал(а): Обновление документации дело хорошее, насчет wiki надо подумать. Это надо организовывать и поддерживать... Гитхаб. Там же можно сделать репозиторий для примеров кода. Готов хоть прямо сейчас сделать стартовую версию. |
Автор: | diver [ Пн сен 05, 2016 22:31 ] |
Заголовок сообщения: | Re: QUARK-ую |
пришлось тут....по долгу службы... реализация Брезенхейма для линии на Quark-е - в 2D экран - из серии тупо и в лоб... продолжение подобных развлечений, видимо, следует )))) Код: \ void drawLine(int x1, int y1, int x2, int y2) {
\ const int deltaX = abs(x2 - x1); \ const int deltaY = abs(y2 - y1); \ const int signX = x1 < x2 ? 1 : -1; \ const int signY = y1 < y2 ? 1 : -1; \ int error = deltaX - deltaY; \ setPixel(x2, y2); \ while(x1 != x2 || y1 != y2) \ { \ setPixel(x1, y1); \ const int error2 = error * 2; \ if(error2 > -deltaY) \ { \ error -= deltaY; \ x1 += signX; \ } \ if(error2 < deltaX) \ { \ error += deltaX; \ y1 += signY; \ } \ } \ } 0 VALUE x1 0 VALUE x2 0 VALUE y1 0 VALUE y2 0 VALUE deltaX 0 VALUE deltaY 0 VALUE signX 0 VALUE signY 0 VALUE error 0 VALUE error2 0xFF00FF VALUE color : setColor TO color ; : drawLine \ x1 y1 x2 y2 -- TO y2 TO x2 TO y1 TO x1 x2 x1 - ABS TO deltaX y2 y1 - ABS TO deltaY x1 x2 < IF 1 ELSE -1 THEN TO signX y1 y2 < IF 1 ELSE -1 THEN TO signY deltaX deltaY - TO error x2 y2 color PIXEL BEGIN x1 y1 color PIXEL error 2* TO error2 error2 deltaY -1 * > IF error deltaY - TO error x1 signX + TO x1 THEN error2 deltaX < IF error deltaX + TO error y1 signY + TO y1 THEN x1 x2 = y1 y2 = AND UNTIL ; 100 100 500 70 drawLine 100 100 500 170 drawLine |
Автор: | Hishnik [ Вт сен 06, 2016 02:39 ] |
Заголовок сообщения: | Re: QUARK-ую |
diver писал(а): реализация Брезенхейма для линии на Quark-е - в 2D экран - из серии тупо и в лоб... Так может в ядро внести, если надо? |
Автор: | diver [ Вт сен 06, 2016 05:48 ] |
Заголовок сообщения: | Re: QUARK-ую |
Hishnik писал(а): diver писал(а): реализация Брезенхейма для линии на Quark-е - в 2D экран - из серии тупо и в лоб... Так может в ядро внести, если надо? Не очень уверен, что это сильно актуально.... локальных переменных бы в стиле { a b c | d } это да ))) и пару-тройку базовых примеров с графикой в архив (можно, конечно и на форуме нарыть, но системизация простейшая бы не помешала...) |
Автор: | diver [ Вт сен 06, 2016 06:39 ] |
Заголовок сообщения: | Re: QUARK-ую |
продолжение "развлечений" - прямоугольнички - контур и раскрашенный Код: 0 VALUE h
0 VALUE v : Rectangle \ x1 y1 h v TO v TO h TO x1 TO y1 x1 y1 h color HLINE x1 h + y1 v color VLINE x1 y1 v color VLINE x1 y1 v + h color HLINE ; : fillRect \ x1 y1 h v color setColor TO v TO h TO x1 TO y1 v 0 DO x1 y1 I + h color HLINE LOOP ; |
Автор: | gudleifr [ Вт сен 06, 2016 09:46 ] |
Заголовок сообщения: | Re: QUARK-ую |
diver писал(а): реализация Брезенхейма Линии удобнее рисовать, используя числа двойной длины. Складывать полностью, а отрисовывать только старшую половину. Т.е. младшая половина - error, а перенос из ее - превышение delta. Надобность в сравнениях отпадает.
|
Автор: | Hishnik [ Ср сен 07, 2016 00:12 ] |
Заголовок сообщения: | Re: QUARK-ую |
diver писал(а): локальных переменных бы в стиле { a b c | d } это да ))) Есть такие варианты: Код: : BOX // X1, Y1, X2, Y2, COLOR
4 PICK 4 PICK 4 PICK 7 PICK - 3 PICK HLINE 4 PICK 4 PICK 3 PICK 6 PICK - 3 PICK VLINE 4 PICK 2 PICK 4 PICK 7 PICK - 3 PICK HLINE 2 PICK 4 PICK 3 PICK 6 PICK - 3 PICK VLINE DROP DROP DROP DROP DROP ; 100 150 200 180 0xFFFF BOX : BOX // X1, Y1, X2, Y2, COLOR // 4 3 2 1 0 FRAME{ ARG4 @ ARG3 @ ARG2 @ ARG4 @ - ARG0 @ HLINE ARG4 @ ARG3 @ ARG1 @ ARG3 @ - ARG0 @ VLINE ARG4 @ ARG1 @ ARG2 @ ARG4 @ - ARG0 @ HLINE ARG2 @ ARG3 @ ARG1 @ ARG3 @ - ARG0 @ VLINE }FRAME ; 300 150 400 180 0xFF00 BOX : BOX LOC[ QUAN X1 QUAN X2 QUAN Y1 QUAN Y2 QUAN COLOR ]LOC TO COLOR TO Y2 TO X2 TO Y1 TO X1 X1 Y1 X2 X1 - COLOR HLINE X1 Y1 Y2 Y1 - COLOR VLINE X1 Y2 X2 X1 - COLOR HLINE X2 Y1 Y2 Y1 - COLOR VLINE ; 500 150 600 180 0xFF0000 BOX |
Автор: | diver [ Ср сен 07, 2016 06:50 ] |
Заголовок сообщения: | Re: QUARK-ую |
вот последний - совсем красивый)) (плохо я мануал курил)))) |
Автор: | Hishnik [ Ср сен 07, 2016 23:51 ] |
Заголовок сообщения: | Re: QUARK-ую |
diver писал(а): вот последний - совсем красивый)) Оно и было сделано как раз "по нарастанию эффекта". В последнем случае, кстати, внутри LOC[ ]LOC можно объявлять вообще что угодно, включая вложенные слова. А в них - свои такие же структуры и вложенные слова. Это не особенный режим со своими ресурсами и контекстом, а просто временный перевод в режим интерпретации, где LOC[ к тому же делает ссылку вперед, а ]LOC ставит туда переход на себя, попутно восстанавливая CURRENT на момент входа в LOC[. Получается, что в процессе определения слова в словаре делается отдельная ветка, которая при выполнении ]LOC просто выключается из поиска. Вот мне кажется, что это есть решение в рамках форт-подхода. Не в "высокодуховном" смысле, а на основе имеющихся структур, алгоритмов и приемов программирования. |
Автор: | gudleifr [ Ср сен 07, 2016 23:57 ] |
Заголовок сообщения: | Re: QUARK-ую |
Hishnik писал(а): Вот мне кажется, что это есть решение в рамках форт-подхода. "В рамках форт-подхода" это стандартно делается путем организации отдельного словаря. Сама же идея "толстых слов", требующих локальных переменных, противоречит FORTH-подходу. Нарушает FORTH-соглашения и наличие большого числа почти одинаковых строк.
|
Автор: | Victor__v [ Пт сен 09, 2016 13:05 ] |
Заголовок сообщения: | Re: QUARK-ую |
Цитата: Вот мне кажется, что это есть решение в рамках форт-подхода. Не в "высокодуховном" смысле, а на основе имеющихся структур, алгоритмов и приемов программирования. Иногда делаю слова-карманы внутри слов. Что-то вроде : test 10 10 . . [ here 1000 allocate throw dp ! here ] .... \ код кармана-слова [ dup lit, ] r> ['] throw >r ['] free >r >r ['] ] >r [ ret, swap dp ! execute .... \ продолжаем работу test ; |
Страница 3 из 5 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |