Палитра Каллисто
Перейти к навигации
Перейти к поиску
Чтобы предоставить вам больше места для творчества, следующие слова не включены в ядро Каллисто. При необходимости они могут быть скопированы отсюда и добавлены программистом в свой исходный код.
Константы[править]
2 Constant cell 8 Constant 8 10 Constant 10 16 Constant 16 '"' Constant quote
Массивы[править]
Одномерные и двумерные массивы десятичных чисел, без проверки границ индекса. Нумерация элементов начинается с нуля. При инициализации передаётся количество элементов (количество строк и столбцов, в случае двумерного массива).
Например, 3 Vector V создаёт одномерный массив V из трёх элементов: 0 V 1 V и 2 V :
: Vector ( #cells -- ) <Builds Дhere , Дallot DOES> ( i -- ’cell) @ + ; : Matrix ( i' j' -- ) <Builds over , Дhere , × Дallot DOES> ( i j -- 'cell) ↑ @ rot × rot + ↔ 2+ @ + ;
Манипуляции со стеком[править]
: -rot ( a b c -- c a b ) rot rot ; : tuck ( a b -- b a b ) ↔ over ; : nip ( a b -- b ) ↔ drop ;
Арифметика[править]
: <= ( 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 ;
Работа с памятью[править]
: 1+! ( a -- ) 1 ↔ +! ; : 1-! ( a -- ) -1 ↔ +! ; : 2@ ( a -- bb ) ↑ 2+ @ ↔ @ ; : 2! ( bb a -- ) ↑ >r ! r> 2+ ! ; : compile, ( a --) , ;
Числа двойной длины[править]
: d>s ( dd -- i ) 65536, × + ; : d× ( dd1 dd2 — dd3 ) d>s rot rot d>s × s>d ; : d@ ( a — n ) 2@ d>s ;
Преобразование адресов полей словарной статьи[править]
: >link ( CFA -- LFA ) body> ; \ 2- : link> ( LFA -- CFA ) 2+ ; : b>link ( PFA -- LFA ) body> body> ; \ 4- : l>body ( LFA -- PFA ) 2+ 2+ ; \ 4+
Строки, завершающиеся нулевым символом[править]
: zcount ( a -- a n ) ↑ 0 BEGIN ↔ ↑ c@ WHILE 1+ ↔ 1+ REPEAT drop ; : ztype ( a -- ) BEGIN ↑ c@ ↑ WHILE emit 1+ REPEAT 2drop ; : z! ( asrc adst -- ) BEGIN over c@ ↑ >r over c! r> WHILE ↔ 1+ ↔ 1+ REPEAT 2drop ;
Ввод-вывод[править]
: home ( -- ) 0 ↑ at-xy ; : wait ( -- ) ekey drop ;
Работа с внешней памятью[править]
: sclr ( n -- ) ." S# " s. ." Clear ? <Y/CR> " key 'Y' = IF buffer b/buf blank update flush then ; : .line (line) type ;
Отладка[править]
: c? ( a -- ) c@ . ; : рег? ( u -- ) ип . ; : s. ( a -- a ) ↑ . ; : h. ( a -- a ) base @ hex over i. base ! ; : b. ( -- ) base @ ↑ decimal i. base ! ; : prs ( n -- ) depth 1- min for i 1- pick . next ; : Дfree ( -- n ) sp@ Дhere - ;
Остальное[править]
: binary 2 base ! ; : octal 8 base ! ; : grads 2 9045 рег! ; : cells 2× ; : cell+ 2+ ; : recurse ?comp last name> , ; immediate : defer! ( xt2 xt1 -- ) >body ! ; : defer@ ( xt1 -- xt2 ) >body @ ;
![]() |
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
![]() |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |