Каллисто
Каллисто — компактный диалект языка Форт с элементами colorFORTH, написанный для «Электроники МК-161» на РЯМК и предназначенный для программирования «на борту». Пока существует в альфа-версии, но уже позволяет определять новые слова, редактировать и компилировать экраны, успешно переносить на МК-161 старые программы, написанные на языке Форт. Актуальная версия — 0.3.5a.
Вместо фортовского цикла LOOP Каллисто использует более простой и быстрый цикл FOR из colorFORTH, а «бесконечный» стек содержит 12-разрядные десятичные числа ЭКВМ с плавающей запятой. Помимо обычной (для Форта) целочисленной операций деления, Каллисто использует традиционное для ПМК деление с плавающей запятой. Сохранены традиционные для ПМК обозначения операций умножения, подъёма стека, а также русскоязычные операции ПМК — ЗН , СЧ и т.д.
В отличии от ранних диалектов Форт экран Каллисто содержит 48 строк и занимает 3 Кб. Из-за того, что строка экрана занимает традиционные 64 символа, использование встроенного в ЭКВМ редактора является затруднительным. Программистам Каллисто предлагает строковый редактор, а также возможность написать собственный редактор экранов. Каллисто использует накладную алфавитно-цифровую клавиатуру для быстрого посимвольного ввода команд и данных.
Вводимые слова компилируются в словарь, находящийся в области двоичных данных. В этой же области располагается стек возвратов. Стек данных располагается в области десятичных регистров. Там же располагается «десятичный словарь», где хранятся десятичные переменные типа VALUE
Словарь Каллисто
- COLD — Первая словарная статья
- WARM
- BYE — Выход из системы может использоваться как временный, отладочный останов.
- VERSION — Кладёт в стек номер версии Каллисто.
- EXECUTE — Исполняет слово, CFA которого хранится в стеке.
- ?BREAK — Проверяем клавиатуру на паузу и аварийную остановку.
- (LITERAL) — Код периода выполнения для литерала.
- TYPE — Передаёт u символов начиная с адреса a на выходное устройство.
- TYPE1 — Вывести строку из памяти данных, заменяя управляющие коды и строго в одну строчку, до конца индикатора.
- ?BRANCH — Условный переход в шитом коде.
- BRANCH — Безусловный переход в шитом коде.
- (FOR)
- (NEXT)
- (FIND) — Искать слово a1 в списке a2. При успехе дать NFA его статьи и c - байт длины с флагами.
- DIGIT — ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE
- РЕГ! — Запись в регистр ЭКВМ Rn при стеке ЭКВМ, заполненном на основе стека Форта.
- РЕГ@ — Чтение из регистра ЭКВМ Rn с сохранением стека ЭКВМ в переменных RX RY RZ RT
- 0=
- 0>
- 0<
- =
- <
- >
- ENCL
- EMI
- EMIT — Отображает на экране символ, код которого находится в стеке.
- C. — Выводит символ как в дампе, управляющие символы заменяются на "."
- ↵
- BELL
- BEEP
- (PLAY)
- PLOT — Отображение точки на экране
- DRAW — Рисует прямые линии, X и Y - координаты конца линии; L - код цвета/яркости, как и в случае PLOT
- ГРФ — Вывод графической информации.
- ↖ — Очищаем экран, оба курсора в левый верхний угол
- AT-XY — Позиционирование курсора: COL ROW AT-XY
- DISKOFF
- KEY — Ожидает ввод символа с клавиатуры, при вводе посылает его код в стек.
- ACCEPT
- 1+ — Прибавление 1.
- 2+ — Прибавление 2.
- 1- — Вычитание 1.
- 2× — Умножение на 2 (двоичный сдвиг влево).
- 2/ — Целочисленное деление на 2 (двоичный сдвиг вправо).
- 2÷ — Деление на 2 чисел с десятичной плавающей запятой.
- + — Сложение.
- - — Вычитание b из a.
- × — Умножение.
- ÷ — Деление с десятичной плавающей запятой.
- / — Целочисленное деление a на b, помещение частного в стек.
- MOD — Получение остатка от деления a на b.
- /MOD — Деление с остатком a на b.
- ×/ — Операция масштабирования -- умножение n1 на n2 с последующим делением на n3.
- ×/MOD — Остаток и частное от деления произведения n1*n2 на n3.
- NEGATE — Смена знака числа в стеке.
- ><
- S>D
- |X| — Получение абсолютного значения.
- AND — 32-битное побитовое логическое умножение (И).
- OR — 32-битное побитовое логическое сложение (ИЛИ).
- XOR — 32-битное побитовое логическое исключающее ИЛИ (XOR).
- INVERT — 32-битное побитовое логическое отрицание (НЕ).
- MIN — Выделение минимума.
- MAX — Выделение максимума.
- 10x
- Ex
- LG
- LN
- X2
- √
- 1/X
- Yx
- СЧ
- ЗН
- [X]
- {X}
- DEGREES
- RADIANS
- ARCSIN
- ARCCOS
- ARCTG
- SIN
- COS
- TG
- SP@
- !SP
- RP@
- !RP
- EXIT
- LEAVE
- UNLOOP
- >R
- R>
- I
- LEV
- PICK
- OVER
- ↔
- 2SWAP
- ↑
- ?DUP
- 2DUP
- ROT
- 2DROP
- DROP
- CMOVE
- CMOVE>
- FILL
- ERASE
- BLANK
- HOLD
- TIB
- +!
- TOGGLE
- @
- U@
- C@
- !
- C!
- BODY>
- !CSP
- HERE
- ALLOT
- ДHERE
- ДALLOT
- [
- ]
- HEX
- DECIMAL
- -TRAILING
- UPPER
- DEFINITIONS
- UPDATE
- X
- :
- ;
- CONSTANT
- VARIABLE
- VALUE
- DOES>
- F#>
- F#S
- <F#
- 0
- 1
- 2
- 3
- $\pi$
- BL
- C/L
- B/BUF
- RT
- RZ
- RY
- RX
- S0
- R0
- ДDP
- WIDTH
- WARNING
- FENCE
- DP
- VOCL
- AUTOEXEC
- GRXY
- BLK
- >IN
- SCR
- OFFSET
- CONTEXT
- CURRENT
- STATE
- BASE
- DPL
- CSP
- R#
- HLD
- $EX
- ERB
- SAVIN
- ,
- C,
- Д,
- LATEST
- SPACE
- N>LINK
- NAME>
- N>BODY
- ?ERROR
- ?COMP
- ?EXEC
- ?PAIR
- ?CSP
- ?LOAD
- COMPILE
- SMUDGE
- (;CODE)
- <BUILDS
- COUNT
- (.")
- ."
- .(
- QUERY
- \0
- PAD
- WORD
- CONVERT
- FINDN
- NUMBER
- FL
- ERROR
- ID.
- CREATE
- [COMPILE]
- TO
- LITERAL
- FLITERAL
- ?STACK
- INTERPRET
- IMMEDIATE
- VOCABULARY
- (
- QUIT
- ABORT
- EMPTY-BUFFERS
- SAVE-BUFFERS
- FLUSH
- BUFFER
- BLOCK
- (LINE)
- MESSAGE
- LOAD
- \
- \S
- -->
- 'N
- [']
- >MARK
- >RESOLVE
- <MARK
- <RESOLVE
- UNTIL
- AGAIN
- BEGIN
- THEN
- ELSE
- IF
- WHILE
- REPEAT
- FOR
- NEXT
- SPACES
- I#>
- SIGN
- I#
- I#S
- <I#
- (.)
- I.
- .
- I.R
- LIST
- INDEX
- WORDS
- COPY
- DEPTH
- DUMP
- .S
- КАТ
- SAVE-TEXT
- RGRW
- LORW
- R/W
- SAVE"
- LOAD"
- ;CODE
- FORTH — Делает словарь FORTH контекстным.
- TASK
Ссылки
- Обсуждение Каллисто в Контакте и на сайте Арбинады
- Каллисто v0.3.5a, последняя актуальная версия Каллисто
- Языки Форт и colorFORTH в Википедии
- Каллисто в Википедии — спутник Юпитера, в честь которого назван язык Каллисто