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/