Палитра Каллисто: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
(не показано 56 промежуточных версий этого же участника) | |||
Строка 3: | Строка 3: | ||
== Константы == | == Константы == | ||
2 Constant cell | |||
8 Constant 8 | |||
10 Constant 10 | |||
16 Constant 16 | |||
'"' Constant quote | '"' Constant quote | ||
== | == Массивы == | ||
Одномерные и двумерные массивы [[Десятичное число|десятичных чисел]], без проверки границ индекса. Нумерация элементов начинается с нуля. При инициализации передаётся количество элементов (количество строк и столбцов, в случае двумерного массива). | |||
: | Например, {{Текст на индикаторе|3 Vector V}} создаёт одномерный массив V из трёх элементов: {{Текст на индикаторе|0 V}} {{Текст на индикаторе|1 V}} и {{Текст на индикаторе|2 V}}: | ||
DOES> ( i -- ’cell) + ; | : Vector ( #cells -- ) <Builds Дhere , Дallot | ||
: | DOES> ( i -- ’cell) @ + ; | ||
DOES> | : Matrix ( i' j' -- ) <Builds over , Дhere , × Дallot | ||
DOES> ( i j -- 'cell) ↑ @ rot × rot + ↔ 2+ @ + ; | |||
== Манипуляции со стеком == | == Манипуляции со стеком == | ||
: -rot ( a b c -- c a b ) rot rot ; | : -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 -- a ≥ b ) ↔ > 0= ; | ||
: ≥ ( a,b -- | : ≠ ( a,b -- a ≠ b ) = 0= ; | ||
: ≠ ( a,b -- | : 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 -- ? ) | ||
Строка 30: | Строка 34: | ||
== Работа с памятью == | == Работа с памятью == | ||
: | : 1+! ( a -- ) 1 ↔ +! ; | ||
: 1-! ( a -- ) -1 ↔ +! ; | |||
: 2@ ( a -- bb ) ↑ 2+ @ ↔ @ ; | : 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 ( CFA -- LFA ) body> ; \ 2- | ||
: link> ( LFA -- CFA ) 2+ ; | : link> ( LFA -- CFA ) 2+ ; | ||
: b>link ( PFA -- LFA ) body> body> ; \ 4- | : b>link ( PFA -- LFA ) body> body> ; \ 4- | ||
: l>body ( LFA -- PFA ) 2+ 2+ ; \ 4+ | : l>body ( LFA -- PFA ) 2+ 2+ ; \ 4+ | ||
== Строки, завершающиеся [[Символ с кодом 0|нулевым символом]] == | |||
: 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 ; | |||
== Отладка == | == Отладка == | ||
: ? ( a -- ) @ . ; | : c? ( a -- ) c@ . ; | ||
: s. | : рег? ( u -- ) ип . ; | ||
: h. | : s. ( a -- a ) ↑ . ; | ||
: b. | : h. ( a -- a ) base @ hex over i. base ! ; | ||
: prs | : 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 ! ; | : octal 8 base ! ; | ||
: recurse | : grads 2 9045 рег! ; | ||
: cells 2× ; | |||
: cell+ 2+ ; | |||
: recurse ?comp last name> , ; immediate | |||
: defer! ( xt2 xt1 -- ) >body ! ; | |||
: defer@ ( xt1 -- xt2 ) >body @ ; | |||
{{нет иллюстраций}} | |||
{{заготовка}} | |||
[[Категория:Каллисто]] | [[Категория:Каллисто]] |
Текущая версия от 20:13, 10 ноября 2017
Чтобы предоставить вам больше места для творчества, следующие слова не включены в ядро Каллисто. При необходимости они могут быть скопированы отсюда и добавлены программистом в свой исходный код.
Константы[править]
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 @ ;
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |