Палитра Каллисто
Чтобы предоставить вам больше места для творчества, следующие слова не включены в ядро Каллисто. При необходимости они могут быть скопированы отсюда и добавлены программистом в свой исходный код.
Константы
0 Constant false -1 Constant true '"' Constant quote
Определяющие слова
: Array ( #cells -- ) <Builds 2× allot DOES> ( i -- ’cell) ↔ 2× + ;
Манипуляции со стеком
: -rot ( a b c -- c a b ) rot rot ;
Арифметика
: 2- ( a -- a-2 ) BODY> ; : <= ( a,b ---> a <= b ) ↔ < 0= ; : ≥ ( a,b ---> a ≥ b ) ↔ > 0= ; : ≠ ( a,b ---> a ≠ b ) = 0= ; : D0= ( aa ---> aa = 0 ) or 0= ; : under+ ( a b c -- a+c b ) rot + ↔ ; : within ( n lo hi+1 -- ? ) >r 1- over < ↔ r> < and ;
Работа с памятью
: 0! ( a -- ) 0 ↔ ! ; : 2@ ( a -- bb ) ↑ 2+ @ ↔ @ ;
Преобразование адресов полей словарной статьи
: >body ( CFA -- PFA ) 2+ ; : >link ( CFA -- LFA ) body> ; \ 2- : link> ( LFA -- CFA ) 2+ ; : b>link ( PFA -- LFA ) body> body> ; \ 4- : l>body ( LFA -- PFA ) 2+ 2+ ; \ 4+
Ввод-вывод
Вывод строк, завершающихся нулевым символом:
: typez ( a -- ) BEGIN ↑ c@ ↑ WHILE emit 1+ REPEAT 2drop ;
Работа с внешней памятью
: thru ( n1,n2 -- Интерпретировать экраны) ( от n1 до n2 включительно) 1+ over - for ↑ load 1+ next drop ;
Отладка
: ? ( a -- ) @ . ; : S. ( a -- a ) ↑ . ;
Остальное
: octal 8 base ! ;