Палитра Каллисто: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 13: Строка 13:
     DOES> ( i -- ’cell)  @ + ;
     DOES> ( i -- ’cell)  @ + ;
  : Matrix  ( i' j' --    )  <Builds  over ,  Дhere ,  × Дallot
  : Matrix  ( i' j' --    )  <Builds  over ,  Дhere ,  × Дallot
     DOES> ( i j -- 'cell)  ↑ @  rot × rot +  ↔ 1+ @  + ;
     DOES> ( i j -- 'cell)  ↑ @  rot × rot +  ↔ 2+ @  + ;
 


== Манипуляции со стеком ==
== Манипуляции со стеком ==

Версия от 00:08, 14 сентября 2015

Чтобы предоставить вам больше места для творчества, следующие слова не включены в ядро Каллисто. При необходимости они могут быть скопированы отсюда и добавлены программистом в свой исходный код.


Константы

2 Constant cell
0 Constant false
-1 Constant true
'"' Constant quote


Определяющие слова

: 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 ;


Арифметика

: 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= ;
: not  ( a -- b )   inverse ;
: 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+ ! ;
: compile, ( a --) , ;


Преобразование адресов полей словарной статьи

: >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 ;
: home  ( -- )   0 ↑ at-xy ;
: 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 -- )    @ . ;
: c?   ( a -- )    c@ . ;
: рег? ( u -- )    рег@ . ;
: 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   ?comp  latest name> , ; immediate


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.