Палитра Каллисто: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 20: | Строка 20: | ||
== Арифметика == | == Арифметика == | ||
: 2- ( a -- a-2 ) | : 2- ( a -- a-2 ) body> ; | ||
: <= ( a,b -- | : <= ( a,b -- a <= b ) ↔ < 0= ; | ||
: ≥ ( a,b -- | : ≥ ( a,b -- a ≥ b ) ↔ > 0= ; | ||
: ≠ ( a,b -- | : ≠ ( a,b -- a ≠ b ) = 0= ; | ||
: 0≠ ( a -- a ≠ 0 ) 0= 0= ; | |||
: under+ ( a b c -- a+c b ) rot + ↔ ; | : under+ ( a b c -- a+c b ) rot + ↔ ; | ||
: within ( n lo hi+1 -- ? ) | : within ( n lo hi+1 -- ? ) |
Версия от 08:20, 12 сентября 2015
Чтобы предоставить вам больше места для творчества, следующие слова не включены в ядро Каллисто. При необходимости они могут быть скопированы отсюда и добавлены программистом в свой исходный код.
Константы
0 Constant false -1 Constant true '"' Constant quote
Определяющие слова
: Vector ( #cells -- ) <Builds 2× allot DOES> ( i -- ’cell) ↔ 2× + ; : CVector ( #cells -- ) <Builds allot DOES> ( i -- ’cell) + ; : CMatrix ( i' j' -- ) <Builds over , × allot DOES> ( i j -- 'cell) ↔ over @ × + + 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= ; : 0≠ ( a -- a ≠ 0 ) 0= 0= ; : under+ ( a b c -- a+c b ) rot + ↔ ; : within ( n lo hi+1 -- ? ) >r 1- over < ↔ r> < and ;
Работа с памятью
: 0! ( a -- ) 0 ↔ ! ; : 1+! ( a -- ) ↑ @ 1+ ↔ ! ; : 1-! ( a -- ) ↑ @ 1- ↔ ! ; : 2@ ( a -- bb ) ↑ 2+ @ ↔ @ ; : 2! ( bb a -- ) ↑ >r ! r> 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 ;
: wait key drop ;
Работа с внешней памятью
: thru ( n1,n2 -- Интерпретировать экраны) ( от n1 до n2 включительно) 1+ over - for ↑ load 1+ next drop ; : sclr ( n -- ) ." S# " s. ." Clear ? <Y/CR> " key 'Y' = IF buffer b/buf blank update flush then ; : .line (line) type ;
Отладка
: ? ( a -- ) @ . ; : s. ( a -- a ) ↑ . ; : h. ( a -- a ) base @ hex over i. base ! ; : b. ( -- ) base @ . ; : prs ( n -- ) depth 1- min for i 1- pick . next ; : free ( -- n ) rp@ pad - ;
Остальное
: binary 2 base ! ; : octal 8 base ! ; : recurse latest name> , ; immediate