Каллисто: различия между версиями
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
Строка 9: | Строка 9: | ||
== Словарь Каллисто == | == Словарь Каллисто == | ||
* [[COLD]] | * [[COLD]] — Первая словарная статья | ||
* [[WARM]] | * [[WARM]] | ||
* [[BYE]] | * [[BYE]] — Выход из системы может использоваться как временный, отладочный останов. | ||
* [[VERSION]] | * [[VERSION]] — Кладёт в стек номер версии Каллисто. | ||
* [[EXECUTE]] | * [[EXECUTE]] — Исполняет слово, [[CFA]] которого хранится в стеке. | ||
* [[?BREAK]] | * [[?BREAK]] — Проверяем клавиатуру на паузу и аварийную остановку. | ||
* [[(LITERAL)]] | * [[(LITERAL)]] — Код периода выполнения для литерала. | ||
* [[TYPE (Каллисто)|TYPE]] | * [[TYPE (Каллисто)|TYPE]] — Передаёт u символов начиная с адреса a на выходное устройство. | ||
* [[TYPE1]] | * [[TYPE1]] — Вывести строку из памяти данных, заменяя управляющие коды и строго в одну строчку, до конца индикатора. | ||
* [[?BRANCH]] | * [[?BRANCH]] — Условный переход в шитом коде. | ||
* [[BRANCH]] | * [[BRANCH]] — Безусловный переход в шитом коде. | ||
* [[(FOR)]] | * [[(FOR)]] | ||
* [[(NEXT)]] | * [[(NEXT)]] | ||
* [[(FIND)]] | * [[(FIND)]] — Искать слово a1 в списке a2. При успехе дать NFA его статьи и c - байт длины с флагами. | ||
* [[DIGIT]] | * [[DIGIT]] — ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE | ||
* [[РЕГ!]] | * [[РЕГ!]] — Запись в регистр ЭКВМ Rn при стеке ЭКВМ, заполненном на основе стека Форта. | ||
* [[РЕГ@]] | * [[РЕГ@]] — Чтение из регистра ЭКВМ Rn с сохранением стека ЭКВМ в переменных RX RY RZ RT | ||
* [[0=]] | * [[0=]] | ||
* [[0-больше (Каллисто)|0>]] | * [[0-больше (Каллисто)|0>]] | ||
Строка 34: | Строка 34: | ||
* [[ENCL]] | * [[ENCL]] | ||
* [[EMI]] | * [[EMI]] | ||
* [[EMIT]] | * [[EMIT]] — Отображает на экране символ, код которого находится в стеке. | ||
* [[C.]] | * [[C.]] — Выводит символ как в дампе, управляющие символы заменяются на "." | ||
* [[↵ (Каллисто)|↵]] | * [[↵ (Каллисто)|↵]] | ||
* [[BELL]] | * [[BELL]] | ||
* [[BEEP]] | * [[BEEP]] | ||
* [[(PLAY)]] | * [[(PLAY)]] | ||
* [[PLOT]] | * [[PLOT]] — Отображение точки на экране | ||
* [[DRAW]] | * [[DRAW]] — Рисует прямые линии, X и Y - координаты конца линии; L - код цвета/яркости, как и в случае PLOT | ||
* [[ГРФ]] | * [[ГРФ]] — Вывод графической информации. | ||
* [[↖ (Каллисто)|↖]] | * [[↖ (Каллисто)|↖]] — Очищаем экран, оба курсора в левый верхний угол | ||
* [[AT-XY]] | * [[AT-XY]] — Позиционирование курсора: COL ROW AT-XY | ||
* [[DISKOFF]] | * [[DISKOFF]] | ||
* [[KEY]] | * [[KEY]] — Ожидает ввод символа с клавиатуры, при вводе посылает его код в стек. | ||
* [[ACCEPT]] | * [[ACCEPT]] | ||
* [[1+]] | * [[1+]] — Прибавление 1. | ||
* [[2+]] | * [[2+]] — Прибавление 2. | ||
* [[1-]] | * [[1-]] — Вычитание 1. | ||
* [[2×]] | * [[2×]] — Умножение на 2 (двоичный сдвиг влево). | ||
* [[2/]] | * [[2/]] — Целочисленное деление на 2 (двоичный сдвиг вправо). | ||
* [[2÷]] | * [[2÷]] — Деление на 2 чисел с десятичной плавающей запятой. | ||
* [[+ (Каллисто)|+]] | * [[+ (Каллисто)|+]] — Сложение. | ||
* [[- (Каллисто)|-]] | * [[- (Каллисто)|-]] — Вычитание b из a. | ||
* [[× (Каллисто)|×]] | * [[× (Каллисто)|×]] — Умножение. | ||
* [[÷ (Каллисто)|÷]] | * [[÷ (Каллисто)|÷]] — Деление с десятичной плавающей запятой. | ||
* [[/ (Каллисто)|/]] | * [[/ (Каллисто)|/]] — Целочисленное деление a на b, помещение частного в стек. | ||
* [[MOD]] | * [[MOD]] — Получение остатка от деления a на b. | ||
* [[/MOD]] | * [[/MOD]] — Деление с остатком a на b. | ||
* [[×/]] — Операция масштабирования -- умножение n1 на n2 с последующим делением на n3. | |||
* [[×/]] | * [[×/MOD]] — Остаток и частное от деления произведения n1*n2 на n3. | ||
* [[×/MOD]] | * [[NEGATE]] — Смена знака числа в стеке. | ||
* [[NEGATE]] | |||
* [[Больше-меньше (Каллисто)|><]] | * [[Больше-меньше (Каллисто)|><]] | ||
* [[S-больше-D (Каллисто)|S>D]] | * [[S-больше-D (Каллисто)|S>D]] | ||
* [[Bar-X-bar (Каллисто)||X|]] | * [[Bar-X-bar (Каллисто)||X|]] — Получение абсолютного значения. | ||
* [[AND]] | * [[AND]] — 32-битное побитовое логическое умножение (И). | ||
* [[OR]] | * [[OR]] — 32-битное побитовое логическое сложение (ИЛИ). | ||
* [[XOR]] | * [[XOR]] — 32-битное побитовое логическое исключающее ИЛИ (XOR). | ||
* [[INVERT]] | * [[INVERT]] — 32-битное побитовое логическое отрицание (НЕ). | ||
* [[MIN]] | * [[MIN]] — Выделение минимума. | ||
* [[MAX]] | * [[MAX]] — Выделение максимума. | ||
* [[10ˣ|10<sup>x</sup>]] | * [[10ˣ|10<sup>x</sup>]] | ||
* [[Eˣ|E<sup>x</sup>]] | * [[Eˣ|E<sup>x</sup>]] | ||
Строка 286: | Строка 285: | ||
* [[LOAD"]] | * [[LOAD"]] | ||
* [[;CODE]] | * [[;CODE]] | ||
* [[FORTH]] | * [[FORTH]] — Делает словарь FORTH контекстным. | ||
* [[TASK]] | * [[TASK]] | ||
Версия от 00:18, 29 июля 2015
Каллисто — компактный диалект языка Форт с элементами 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 в Википедии
- Каллисто в Википедии — спутник Юпитера, в честь которого назван язык Каллисто