DIGIT
DIGIT (цифра) — фортовское слово Каллисто.
DIGIT ( c u1 −− u2 1 | 0 ) Цифра. Преобразовать литеру c в число u2, используя основание u1.
ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE
Ввод слова DIGIT
В режиме ЛАТ последовательно нажмите клавиши K 7 БП 7 2
История
Хотя слово DIGIT не вошло ни в один из стандартов языка Форт, оно является одним из наиболее старых слов Форта. Слово DIGIT появилось в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.
Из-за того, что слово DIGIT очень старое, оно возвращает в качестве истины 1 — хотя стандарт Каллисто это -1. Разное количество аргументов на стеке — тоже практика, от которой уже давно отказались.
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 в ядре ФОРТ-ЕС:
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 ; "Успешный" выход
Ссылки
- Исходный текст слова DIGIT в Каллисто Классик 1.0
- См. слова BASE, NUMBER, CONVERT и U#
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |