Редактирование: Палитра Каллисто

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 4: Строка 4:
== Константы ==
== Константы ==
  2 Constant cell
  2 Constant cell
  8 Constant 8
  0 Constant false
  10 Constant 10
  -1 Constant true
16 Constant 16
  '"' Constant quote
  '"' Constant quote


== Массивы ==
== Определяющие слова ==
Одномерные и двумерные массивы [[Десятичное число|десятичных чисел]], без проверки границ индекса. Нумерация элементов начинается с нуля. При инициализации передаётся количество элементов (количество строк и столбцов, в случае двумерного массива).
: Vector  ( #cells -- ) <Builds 2× allot
 
    DOES> ( i -- ’cell)  ↔ 2× + ;
Например, {{Текст на индикаторе|3 Vector V}} создаёт одномерный массив V из трёх элементов: {{Текст на индикаторе|0 V}} {{Текст на индикаторе|1 V}} и {{Текст на индикаторе|2 V}}:
  : CVector ( #cells -- )  <Builds allot
  : Vector  ( #cells -- )  <Builds Дhere , Дallot
     DOES> ( i -- ’cell)  + ;
     DOES> ( i -- ’cell)  @ + ;
  : CMatrix ( i' j' --    )  <Builds over , × allot
  : Matrix ( i' j' --    )  <Builds over , Дhere ,  × Дallot
     DOES> ( i j -- 'cell)  ↔ over @ × + + 2+ ;
     DOES> ( i j -- 'cell)  @ rot × rot + 2+ @  + ;


== Манипуляции со стеком ==
== Манипуляции со стеком ==
Строка 22: Строка 20:
  : tuck  ( a b -- b a b )    ↔ over ;
  : tuck  ( a b -- b a b )    ↔ over ;
  : nip  ( a b -- b )        ↔ drop ;
  : 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= ;
  : ≥    ( a,b -- a ≥ b )    ↔  >  0= ;
  : ≠    ( a,b -- a ≠ b  )  =  0= ;
  : ≠    ( a,b -- a ≠ b  )  =  0= ;
  : 0≠  ( a -- a ≠ 0 )    0=  0= ;
  : 0≠  ( a -- a ≠ 0 )    0=  0= ;
: not  ( a -- b )  inverse ;
  : 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 -- ? )
Строка 34: Строка 33:


== Работа с памятью ==
== Работа с памятью ==
: 0!  ( a -- )    0 ↔ ! ;
  : 1+! ( a -- )    1 ↔ +! ;
  : 1+! ( a -- )    1 ↔ +! ;
  : 1-! ( a -- )  -1 ↔ +! ;
  : 1-! ( a -- )  -1 ↔ +! ;
Строка 40: Строка 40:
  : compile, ( a --) , ;
  : 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+ ;
Строка 51: Строка 46:
  : 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 ;
Вывод строк, завершающихся [[Символ с кодом 0|нулевым символом]]:
  : ztype   ( a -- )           BEGIN ↑ c@  ↑ WHILE emit 1+ REPEAT  2drop ;
  : typez   ( 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 ;
  : home  ( -- )  0 ↑ at-xy ;
  : wait  ( -- )  ekey drop ;
  : wait  ( -- )  key drop ;


== Работа с внешней памятью ==
== Работа с внешней памятью ==
: thru  ( n1,n2 -- Интерпретировать экраны)
          (        от n1 до n2 включительно)
  1+ over - for ↑ load 1+ next drop ;
  : sclr ( n -- )    ." S# " s. ." Clear ? <Y/CR> "
  : sclr ( n -- )    ." S# " s. ." Clear ? <Y/CR> "
     key 'Y' = IF buffer b/buf blank update flush then ;
     key 'Y' = IF buffer b/buf blank update flush then ;
  : .line  (line) type ;
  : .line  (line) type ;


== Отладка ==
== Отладка ==
  : c?   ( a -- )    c@ . ;
: ?    ( a -- )    @ . ;
  : рег? ( u -- )    ип . ;
  : c?   ( a -- )    c@ . ;
  : s.   ( a -- a )  ↑ . ;
  : рег? ( u -- )    рег@ . ;
  : h.   ( a -- a )  base @ hex over i. base ! ;
  : s.   ( a -- a )  ↑ . ;
  : b.   ( -- )      base @ ↑  decimal i. base ! ;
  : h.   ( a -- a )  base @ hex over i. base ! ;
  : prs   ( n -- )    depth 1- min for i 1- pick . next ;
  : b.   ( -- )      base @ . ;
  : Дfree ( -- n )    sp@ Дhere - ;
  : prs ( n -- )    depth 1- min for i 1- pick . next ;
  : free ( -- n )    rp@ pad - ;


== Остальное ==
== Остальное ==
  : binary    2 base ! ;
  : binary    2 base ! ;
  : octal    8 base ! ;
  : octal    8 base ! ;
: grads    2 9045 рег! ;
  : recurse  latest name> , ; immediate
: cells    2× ;
: cell+    2+ ;
  : recurse  ?comp  last name> , ; immediate
: defer! ( xt2 xt1 -- )  >body ! ;
: defer@ ( xt1 -- xt2 )  >body @ ;




{{нет иллюстраций}}
{{заготовка}}
[[Категория:Каллисто]]
[[Категория:Каллисто]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)