DIGIT: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Строка 26: Строка 26:
: DIGIT ( C,N1->N2,TF/FF) 0 ROT ROT 0
: DIGIT ( C,N1->N2,TF/FF) 0 ROT ROT 0
  DO I ALPHA OVER ─ IF 2DROP I -1 0 LEAVE THEN LOOP DROP ;
  DO I ALPHA OVER ─ IF 2DROP I -1 0 LEAVE THEN LOOP DROP ;
</PRE>
В FORTH ИТЭФ слово DIGIT тоже было [[примитив]]ом, вот его определение:
<PRE>
            HEAD    205Q,'DIGI',324Q,DIGIT              ; DIGIT
  ; ASCII-DIGIT BASE=>DIGIT-VALUE TRUE (FALSE)
            POP  AX      ; AX=BASE
            POP  CX
            SUB  CX, 60Q ; VALID DIGIT = ASCII-60
            JL    FALSE
            CMP  CX, 9  ; Если >9
            JLE  M09
            SUB  CX, 7
            CMP  CX, 10
            JL    FALSE
  M09:      CMP  CX, AX  ; Если не меньше BASE, то ошибка
            JGE  FALSE
            PUSH  CX      ; Запись цифры в стек
            JMP  TRUE    ; "Успешный" выход
</PRE>
</PRE>



Версия от 09:45, 27 марта 2016

DIGIT (цифра) — стандартное слово Каллисто.

ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE

Ввод слова DIGIT

В режиме ЛАТ последовательно нажмите клавиши  K   7   БП   7   2 

DIGIT в fig-FORTH Release 1 glossary, май 1979 (англ.)

DIGIT           c n1 --- n2 tf (ok) c n1 --- ff (bad)
       Converts the ascii character c (using base n1) to its binary
       equivalent n2, accompanied by a true flag. If the conversion is
       invalid, leaves only a false flag.

История

Слово DIGIT является одним из наиболее старых слов Форта. Оно появилось в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.

Реализация

Описание и определение слова DIGIT в ядре ФОРТ-ЕС:

DIGIT *   C,N1->N2,TP/FF N2 - ЗНАЧЕНИЕ ЛИТЕРЫ С КАК             39
          ЦИФРЫ В СИСТЕМЕ СЧИСЛЕНИЯ ПО ОСНОВАНИЮ N1

                     Экран номер 39
( 31.03.86      DIGIT CONVERT  NUMBER )

: DIGIT ( C,N1->N2,TF/FF) 0 ROT ROT 0
 DO I ALPHA OVER ─ IF 2DROP I -1 0 LEAVE THEN LOOP DROP ;

В FORTH ИТЭФ слово DIGIT тоже было примитивом, вот его определение:

             HEAD    205Q,'DIGI',324Q,DIGIT               ; DIGIT
   ; ASCII-DIGIT BASE=>DIGIT-VALUE TRUE (FALSE)
             POP   AX      ; AX=BASE
             POP   CX
             SUB   CX, 60Q ; VALID DIGIT = ASCII-60
             JL    FALSE
             CMP   CX, 9   ; Если >9
             JLE   M09
             SUB   CX, 7
             CMP   CX, 10
             JL    FALSE
   M09:      CMP   CX, AX  ; Если не меньше BASE, то ошибка
             JGE   FALSE
             PUSH  CX      ; Запись цифры в стек
             JMP   TRUE    ; "Успешный" выход


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


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