Редактирование: Каллисто
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''Каллисто''' — компактный диалект языка Форт с элементами colorFORTH, написанный для [[Электроника МК-161|«Электроники МК-161»]] на [[РЯМК]] и предназначенный для программирования «на борту». Пока существует в альфа-версии, но уже позволяет определять новые слова, редактировать и компилировать экраны, успешно переносить на МК-161 старые программы, написанные на Форте. Актуальная версия — 0.3.5a. | |||
Вместо фортовского цикла DO…LOOP Каллисто использует более простой и быстрый цикл [[FOR]]…[[NEXT]] из colorFORTH, а [[Стек данных|«бесконечный» стек]] содержит 12-разрядные десятичные числа ЭКВМ с плавающей запятой. Помимо обычной (для Форта) целочисленной операций деления, Каллисто использует традиционное для ПМК деление с плавающей запятой. Сохранены традиционные для ПМК обозначения операций умножения, подъёма стека, а также русскоязычные операции ПМК — [[ЗН]] , [[СЧ]] и т.д. Предусмотрены команды [[РЕГ!]] и [[РЕГ@]] для обращение к функциональным и другим регистрам ЭКВМ по их привычным номерам. | |||
В Каллисто используется [[единое адресное пространство]], при этом размер ячейки памяти зависит от адреса и может колебаться от 1 байта до 12-разрядного десятичного числа с плавающей запятой. Беззнаковые 16-битные целые считываются в [[Стек данных|стек]] из двух последовательных ячеек (байт) памяти с помощью слова [[U@]]. Как принято в ЭКВМ, старший байт идёт по младшему адресу. Первые 10000 ячеек памяти представляют из себя [[память программ]], в которой находится исполняемый код Каллисто. Каждая из этих 10 тысячи ячеек содержит 1 байт, доступный только для чтения. Из-за невозможности исполнять [[Система команд ЭКВМ|код МК-161]] из [[Память двоичных данных|области данных]] при написании определяющих слов вместо конструкции CREATE…DOES> используется более древний, но не менее мощный механизм [[меньше-BUILDS|<BUILDS]] … [[DOES-больше (Каллисто)|DOES>]] | |||
После нажатия клавиши ВВОД введённые слова либо исполняются сразу, либо компилируются в словарь (dictionary), находящийся в [[Память двоичных данных|области двоичных данных]]. В этой же области располагается стек возвратов. «Бесконечный» стек данных располагается в области [[Регистр десятичных данных|десятичных регистров]]. Там же располагается «десятичный словарь», где хранятся удобные десятичные переменные типа [[VALUE]] | |||
Помимо ввода с клавиатуры, исходный текст на языке Каллисто может располагаться на электронном диске в виде ''экрана'', в пронумерованном ''блоке'' (текстовом файле). | |||
В отличии от ранних диалектов Форта экран Каллисто содержит 48 строк, занимает 3 Кб и при интерпретации считывается из буфера в области [[текст]]а. Из-за того, что строка экрана занимает традиционные 64 символа, использование [[Редактор текста|встроенного в ЭКВМ редактора]] является затруднительным. Программистам Каллисто предлагает строковый редактор EDIT, а также возможность написать собственный редактор экранов. Каллисто использует накладную алфавитно-цифровую клавиатуру для быстрого посимвольного ввода команд и данных. | |||
При разработке Каллисто учитывались черновики готовящегося стандарта [http://www.forth200x.org/forth200x.html Forth 200x] — например, с помощью стандартных префиксов Форта для каждого числа можно индивидуально задавать систему счисления. Также в Каллисто можно обнаружить наследие Форта ИТЭФ, от реализации которого отталкивались первые версии Каллисто. Несмотря на явное влияние стандартов языка Форт, при разработке Каллисто приоритет отдавался удобству и скорости работы на [[ЭКВМ]] — вообще говоря, не предназначенной разработчиками для алгоритмических языков высокого уровня. | |||
== Словарь Каллисто == | |||
* [[COLD]] — Первая словарная статья, «холодная» перезагрузка. | |||
* [[WARM]] — «Тёплая» перезагрузка. | |||
* [[BYE]] — Выход из системы. Может использоваться как временный, отладочный останов. | |||
* [[VERSION]] — Кладёт в стек номер версии Каллисто. | |||
* [[EXECUTE]] — Исполняет слово, [[CFA]] которого хранится в [[Стек данных|стеке]]. | |||
* [[?BREAK]] — Проверяем клавиатуру на паузу и аварийную остановку. | |||
* [[(LITERAL)]] — Код периода выполнения для литерала. | |||
* [[TYPE (Каллисто)|TYPE]] — Передаёт u символов начиная с адреса a на выходное устройство. | |||
* [[TYPE1]] — Вывести строку из памяти данных, заменяя управляющие коды и строго в одну строчку, до конца [[индикатор]]а. | |||
* [[?BRANCH]] — Условный переход в шитом коде. | |||
[[ | * [[BRANCH]] — Безусловный переход в шитом коде. | ||
* [[(FOR)]] — Начало цикла со счётчиком в шитом коде. | |||
* [[(NEXT)]] — Конец цикла со счётчиком в шитом коде. | |||
* [[(FIND)]] — Искать слово a1 в списке a2. При успехе дать [[NFA]] его статьи и c - байт длины с флагами. | |||
* [[DIGIT]] — ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE | |||
* [[РЕГ!]] — Запись в [[Регистр памяти данных|регистр ЭКВМ]] Rn при [[Стек калькулятора|стеке ЭКВМ]], заполненном на основе [[Стек данных|стека данных]]. | |||
* [[РЕГ@]] — Чтение из [[Регистр памяти данных|регистра ЭКВМ]] Rn с сохранением [[Стек калькулятора|стека ЭКВМ]] в переменных [[RX (Каллисто)|RX]] [[RY (Каллисто)|RY]] [[RZ (Каллисто)|RZ]] [[RT (Каллисто)|RT]] | |||
* [[0=]] | |||
* [[0-больше (Каллисто)|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 (Каллисто)|S>D]] | |||
* [[Bar-X-bar (Каллисто)||X|]] — Получение абсолютного значения. | |||
* [[AND]] — 32-битное побитовое логическое умножение (И). | |||
* [[OR]] — 32-битное побитовое логическое сложение (ИЛИ). | |||
* [[XOR]] — 32-битное побитовое логическое исключающее ИЛИ (XOR). | |||
* [[INVERT]] — 32-битное побитовое логическое отрицание (НЕ). | |||
* [[MIN]] — Выделение минимума. | |||
* [[MAX]] — Выделение максимума. | |||
* [[10ˣ|10<sup>x</sup>]] — Десятичный антилогарифм. | |||
* [[Eˣ|E<sup>x</sup>]] — Экспонента. | |||
* [[LG]] — Десятичный логарифм. | |||
* [[LN]] — Натуральный логарифм. | |||
* [[X²|X<sup>2</sup>]] — Возведение в квадрат. | |||
* [[√ (Каллисто)|√]] — Квадратный корень. | |||
* [[1/X (Каллисто)|1/X]] — Обратная величина. | |||
* [[Yˣ|Y<sup>x</sup>]] — Степенная функция. | |||
* [[СЧ]] — Случайное число. | |||
* [[ЗН]] — Знак числа. | |||
* [[lbr-X-rbr (Каллисто)|[X]]] — Целая часть числа. | |||
* [[lbc-X-rbc (Каллисто)|{X}]] — Дробная часть числа. | |||
* [[DEGREES]] — Даёт указание Форту (и ЭКВМ) принимать углы в градусах | |||
* [[RADIANS]] — Даёт указание Форту (и ЭКВМ) принимать углы в радианах | |||
* [[ARCSIN]] — Арксинус. | |||
* [[ARCCOS]] — Арккосинус. | |||
* [[ARCTG]] — Арктангенс. | |||
* [[SIN]] — Синус. | |||
* [[COS]] — Косинус. | |||
* [[TG]] — Тангенс. | |||
* [[SP@]] — Записывает в стек адрес вершины [[Стек данных|стека]], до исполнения команды [[SP@]] | |||
* [[!SP]] — Устанавливает указатель [[Стек данных|стека]] в исходное состояние из переменной [[S0]]. | |||
* [[RP@]] — Адрес текущей вершины стека возвратов. | |||
* [[!RP]] — Присваивает указателю стека возвратов исходное (базовое) значение из переменной [[R0 (Каллисто)|R0]]. | |||
* [[EXIT]] — Закончить исполнение текущего определения. | |||
* [[LEAVE]] — Досрочно прерывает цикл [[FOR]] .. [[NEXT]] (только для области данных) | |||
* [[UNLOOP]] | |||
* [[На R|>R]] — Переносит 16-битное число из [[Стек данных|стека данных]] в стек возвратов. | |||
* [[С R|R>]] — Переносит 16-битное число из стека возвратов в [[Стек данных|стек данных]]. | |||
* [[I (Каллисто)|I]] — Копирует верхнее 16-битное число из стека возвратов в [[Стек данных|стек данных]]. | |||
* [[LEV]] | |||
* [[PICK]] — Копирует элемент стека с номером u и записывает его наверх [[Стек данных|стека]]. | |||
* [[OVER]] — Копирует 2-й элемент [[Стек данных|стека]] и заносит его наверх. | |||
* [[↔ (Каллисто)|↔]] — Меняет местами два верхних элемента [[Стек данных|стека]]. | |||
* [[2SWAP]] — Меняет местами верхние две пары чисел в [[Стек данных|стеке]]. | |||
* [[↑ (Каллисто)|↑]] — Дублирует верхний элемент [[Стек данных|стека]]. | |||
* [[?DUP]] — Осуществляет операцию [[↑ (Каллисто)|↑]] если x<>0 | |||
* [[2DUP]] — Дублирует верхнюю пару чисел в [[Стек данных|стеке]]. | |||
* [[ROT]] — Переносит 3-й элемент [[Стек данных|стека]] наверх. | |||
* [[2DROP]] — Удаляет из [[Стек данных|стека]] число двойной длины. | |||
* [[DROP]] — Удаляет верхний элемент [[Стек данных|стека]]. | |||
* [[CMOVE]] — Копирует побайтно область памяти размером u байт начиная с a1 и записывает её начиная с a2. | |||
* [[CMOVE-больше (Каллисто)|CMOVE>]] | |||
* [[FILL]] — Записывает u байт c в память начиная с адреса a | |||
* [[ERASE]] — Записывает u нулевых байтов в память начиная с адреса a. | |||
* [[BLANK]] — Записывает n кодов пробела (32) в память, начиная с адреса a. | |||
* [[HOLD]] — Вводит в текущую ячейку выходного буфера [[PAD]] символ, код которого в [[Стек данных|стеке]] | |||
* [[TIB]] — Занесение в [[Стек данных|стек]] начального адреса входного буфера терминала (Terminal Input Buffer). | |||
* [[+!]] — Добавляет к содержимому ячейки с адресом a число n | |||
* [[TOGGLE]] | |||
* [[@ (Каллисто)|@]] — Замещает адрес в [[Стек данных|стеке]] его содержимым, двухбайтовая ячейка содержит число со знаком. | |||
* [[U@]] — Считываем в [[Стек данных|стек]] 2-х байтовое целое без знака. | |||
* [[C@]] — Извлекает байт информации из ячейки, адрес которой находится в [[Стек данных|стеке]]. | |||
* [[! (Каллисто)|!]] — Записывает число x в ячейку с адресом a. | |||
* [[C!]] — Записывает байт c по адресу a. | |||
* [[BODY-больше (Каллисто)|BODY>]] — [[PFA]] ---> [[CFA]] | |||
* [[!CSP]] — Запомнить адрес вершины [[Стек данных|стека]] в [[CSP]]. | |||
* [[HERE]] — Выдаёт адрес первой свободной ячейки в словаре. | |||
* [[ALLOT]] — Добавляет n байт к полю параметров слова, описанного последним. | |||
* [[ДHERE]] — Выдаёт адрес первого свободного десятичного регистра в десятичном словаре. | |||
* [[ДALLOT]] — Резервирует n десятичных регистров в десятичном словаре. | |||
* [[lbr (Каллисто)|[]] — Переключить текстовый интерпретатор в режим исполнения | |||
* [[rbr (Каллисто)|]]] — Переключить текстовый интерпретатор в режим компиляции. | |||
* [[HEX]] — Устанавливает шестнадцатеричную систему счисления для ввода-вывода. | |||
* [[DECIMAL]] — Устанавливает десятичную систему счисления для ввода-вывода. | |||
* [[-TRAILING]] — Отсечь конечные пробелы. | |||
* [[UPPER]] | |||
* [[DEFINITIONS]] — Контекстный словарь [[VOCABULARY]] становится текущим, все последующие описания связаны с этим словарём. | |||
* [[UPDATE]] — Устанавливает в буфере флаг "спасения". | |||
* [[X (Каллисто)|X]] — Даёт номер загруженного блока. | |||
* [[Двоеточие (Каллисто)|:]] — Начать определение слова через двоеточие. | |||
* [[; (Каллисто)|;]] — Закончить определение через двоеточие. | |||
* [[CONSTANT]] — Определить следующее слово как константу со значением W. | |||
* [[VARIABLE]] — Определить следующее слово как переменную с начальным значением нуль. | |||
* [[VALUE]] — Определить следующее слово как десятичную переменную типа [[VALUE]]. | |||
* [[DOES-больше (Каллисто)|DOES>]] — Начало «исполнения» в определяющем слове. | |||
* [[F-решётка-больше (Каллисто)|F#>]] — Размещает преобразованную строку сразу после словаря, возвращает адрес и число символов. | |||
* [[F-решётка-S (Каллисто)|F#S]] — Преобразовывает число с плавающей запятой в строку символов. | |||
* [[меньше-F-решётка (Каллисто)|<F#]] — Начинает преобразования чисел с плавающей запятой. | |||
* [[0 (Каллисто)|0]] — Константа нуль (значение «ложь»). | |||
* [[1 (Каллисто)|1]] — Константа один. | |||
* [[2 (Каллисто)|2]] — Константа два. | |||
* [[3 (Каллисто)|3]] — Константа три. | |||
* [[π (Каллисто)|$\pi$]] — Число пи. | |||
* [[BL]] — Константа, код пробела (32). | |||
* [[C/L]] — Количество символов в одной строке экрана Форта. | |||
* [[B/BUF]] — Константа, число байт в блочном буфере. | |||
* [[RT (Каллисто)|RT]] — Переменная, содержит [[RT]] ЭКВМ после чтения из регистра словом [[РЕГ@]]. | |||
* [[RZ (Каллисто)|RZ]] — Переменная, содержит [[RZ]] ЭКВМ после чтения из регистра словом [[РЕГ@]]. | |||
* [[RY (Каллисто)|RY]] — Переменная, содержит [[RY]] ЭКВМ после чтения из регистра словом [[РЕГ@]]. | |||
* [[RX (Каллисто)|RX]] — Переменная, содержит [[RX]] ЭКВМ после чтения из регистра словом [[РЕГ@]]. | |||
* [[S0]] — Переменная, содержит адрес дна [[Стек данных|стека данных]]. | |||
* [[R0 (Каллисто)|R0]] — Переменная, адрес дна стека возвратов. | |||
* [[ДDP]] — Указатель десятичного словаря. | |||
* [[WIDTH]] | |||
* [[WARNING]] | |||
* [[FENCE]] — Служит для защиты базового словаря от стирания с помощью оператора FORGET | |||
* [[DP]] | |||
* [[VOCL]] | |||
* [[AUTOEXEC]] — Слово, [[xt]] которого хранится в переменной [[AUTOEXEC]], будет выполнено после загрузки сохранения по [[LOAD"]] | |||
* [[GRXY]] — Графический курсор | |||
* [[BLK]] — Переменная, номер входного блока-экрана. | |||
* [[больше-IN (Каллисто)|>IN]] — Переменная, смещение очередной литеры во входном текстовом буфере или экране. | |||
* [[SCR]] — Служит для хранения текущего значения номера редактируемого экрана. | |||
* [[OFFSET]] — Переменная, содержащая смещение, добавляемое к номеру блоку на стеке словом [[BLOCK]] для получения физического номера блока. | |||
* [[CONTEXT]] — Переменная указывает на словарь [[VOCABULARY]], в котором происходит поиск слов во время интерпретации входного потока. | |||
* [[CURRENT]] — Переменная указывает словарь [[VOCABULARY]], в который вводятся определения новых слов. | |||
* [[STATE]] — Переменная с состоянием текстового интерпретатора: «Истина» — компиляция. | |||
* [[BASE]] — Переменная, текущее основание системы счисления при вводе-выводе чисел. | |||
* [[DPL]] — Переменная, позиция последней запятой в последнем введённом числе от конца. | |||
* [[CSP]] — Переменная для контрольного хранения значения указателя [[Стек данных|стека]]. | |||
* [[R-решётка (Каллисто)|R#]] — Позиция курсора при редактировании экрана. | |||
* [[HLD]] — Переменная — позиция последней литеры, перенесённой в буфер [[PAD]] по [[HOLD]]. | |||
* [[$EX]] — Десятичное значение порядка вводимого числа | |||
* [[ERB]] | |||
* [[SAVIN]] — Сохраняем [[Больше-IN (Каллисто)|>IN]] в [[INTERPRET]] для [[NUMBER]] | |||
* [[, (Каллисто)|,]] — Компилирует число n в первую свободную ячейку словаря. | |||
* [[C,]] — Компилирует байт c в очередной свободный байт словаря. | |||
* [[Д,]] — Компилирует число x в первую свободную ячейку десятичного словаря. | |||
* [[LATEST]] — Дать NFA последней созданной статьи. | |||
* [[SPACE]] — Вывод одного пробела. | |||
* [[N-больше-LINK (Каллисто)|N>LINK]] — [[NFA]] ---> [[LFA]] | |||
* [[NAME-больше|NAME>]] — [[NFA]] ---> [[CFA]] | |||
* [[N-больше-BODY|N>BODY]] — [[NFA]] ---> [[PFA]] | |||
* [[?ERROR]] — диагностика ошибок Форт ИТЭФ | |||
* [[?COMP]] — проверить, что текущий режим — компиляция. | |||
* [[?EXEC]] | |||
* [[?PAIR]] | |||
* [[?CSP]] — Выдать ошибку "сбился указатель [[Стек данных|стека]]" если он не равен значению в [[CSP]] | |||
* [[?LOAD]] | |||
* [[COMPILE]] — Компиляция 16-битного слова, следующего за оператором. | |||
* [[SMUDGE]] — Изменить флаг "SMUDGE" в последней созданной статье. | |||
* [[(;CODE)]] — Записать в поле кода последней статьи следующий адрес и закончить определение. | |||
* [[меньше-BUILDS|<BUILDS]] | |||
* [[COUNT]] — Дать адрес первой литеры и число литер N строки со счётчиком T. | |||
* [[(.")]] — Слово, компилируемое [[."]] | |||
* [[."]] — При исполнении напечатать на терминале следующие литеры до кавычки исключительно. | |||
* [[.(]] — Напечатать следующие литеры до закрывающей скобки исключительно. | |||
* [[QUERY]] — Осуществляет ввод строки символов с клавиатуры. | |||
* [[\0 (Каллисто)|\0]] — (Пустое слово) - закончить интерпретацию. | |||
* [[PAD]] — Выдаёт адрес буфера для промежуточного хранения последовательностей символов | |||
* [[WORD]] — Считывает одно слово из входного или экранного буфера и размещает его, начиная с адреса [[HERE]] | |||
* [[CONVERT]] | |||
* [[FINDN]] — Поиск слова в активных словарях | |||
* [[NUMBER]] — Преобразует в число последовательность символов, начиная с a+1 с учётом [[BASE]], | |||
* [[FL]] | |||
* [[ERROR (Каллисто)|ERROR]] — Диагностика ошибок Форт ИТЭФ | |||
* [[ID.]] — Печатает имя слова, записанное в соответствии с требованиями словаря Форта | |||
* [[CREATE]] — Формирует слово с именем XXX (заголовок и [[CFA]]), оставляя его поле параметров пустым. | |||
* [[lbr-COMPILE-rbr (Каллисто)|[COMPILE]]] — Скомпилировать следующее слово, независимо от его признака [[IMMEDIATE]]. | |||
* [[TO]] — Запись в переменную типа [[VALUE]]. | |||
* [[LITERAL]] | |||
* [[FLITERAL]] — Тоже, что и [[LITERAL]], но для плавучки. | |||
* [[?STACK]] — Выдать ошибку «Исчерпание [[Стек данных|стека]]», если он менее, чем пуст и «Исчерпание памяти» при зазоре, меньшем 5(?) элементов. | |||
* [[INTERPRET]] — Интерпретирует последовательность слов, пока там что-то есть. | |||
* [[IMMEDIATE]] — Преобразует слово, за описанием которого следует, в оператор, исполняемый при компиляции. | |||
* [[VOCABULARY]] — Слово-описатель, которое создаёт новый словарь. | |||
* [[(]] — Комментарий -- пропустить следующий текст до закрывающей круглой скобки. | |||
* [[QUIT]] — Очищает стек возвратов, устанавливает режим исполнения и возвращает управление терминалу. | |||
* [[ABORT]] — Прерывает исполнение, делает словарь [[FORTH]] контекстным, исполняет [[QUIT]] | |||
* [[EMPTY-BUFFERS]] — Буфер отмечается как пустой, независимо от содержания. Обновлённый блок на диск не записывается. | |||
* [[SAVE-BUFFERS]] — Если находящийся в буфере экран был изменён, скидывает его на диск. | |||
* [[FLUSH]] — Если экран изменён, скидывает его на диск и выкидывает его из памяти. | |||
* [[BUFFER]] — Резервирует блок в памяти и приписывает ему номер u (как и [[BLOCK]] ), но сам блок с диска не считывается. | |||
* [[BLOCK]] — Записывает в [[Стек данных|стек]] адрес первого байта в буфере с блоком, номером которого u. | |||
* [[(LINE)]] — Выдаёт адрес a и длину u строки L с экрана S. | |||
* [[MESSAGE]] | |||
* [[LOAD]] — Загружает экран с номером u (компилирует или исполняет) | |||
* [[\ (Каллисто)|\]] — Закончить интерпретацию строки. | |||
* [[\S]] — Закончить интерпретацию экрана. | |||
* [[---больше (Каллисто)|-->]] — Даёт команду немедленно приступить к интерпретации следующего по порядку экрана. | |||
* [['N]] — Ищет слово с именем XXX (из входного или экранного буфера) в словаре Форта. | |||
* [[lbr-'-rbr (Каллисто)|[']]] — Скомпилировать [[CFA]] следующего слова как числовой литерал. | |||
* [[больше-MARK (Каллисто)|>MARK]] — Отметить текущий адрес для ссылки вперёд. | |||
* [[больше-RESOLVE (Каллисто)|>RESOLVE]] — Разрешить ссылку вперёд в адресе a. | |||
* [[меньше-MARK (Каллисто)|<MARK]] — Отметить текущий адрес для ссылки назад. | |||
* [[меньше-RESOLVE (Каллисто)|<RESOLVE]] — Разрешить ссылку назад в адрес a. | |||
* [[UNTIL]] — Конец цикла "[[BEGIN]] [[UNTIL]]". | |||
* [[AGAIN]] — Конец бесконечного цикла "[[BEGIN]] [[AGAIN]]". | |||
* [[BEGIN]] — Начало циклов "[[BEGIN]]". | |||
* [[THEN]] — Конец ветвления "[[IF]]". | |||
* [[ELSE]] — Начало 2-ой ветви ветвления "[[IF]]". | |||
* [[IF]] — Начало ветвления "[[IF]]". | |||
* [[WHILE]] — Ветвление "[[WHILE]]" в цикле "[[BEGIN]] [[WHILE]] [[REPEAT]]". | |||
* [[REPEAT]] — Конец цикла "[[BEGIN]] [[WHILE]] [[REPEAT]]". | |||
* [[FOR]] — Начало цикла со счётчиком. Цикл исполнится ровно n раз. | |||
* [[NEXT]] — Конец цикла со счётчиком. | |||
* [[SPACES]] — Вывод заданного числа "цифровых" (шириной в цифру) пробелов на [[индикатор]]. | |||
* [[I-решётка-больше (Каллисто)|I#>]] — Завершает преобразование целого числа | |||
* [[SIGN]] — Вводит знак "минус" в выходной буфер [[PAD]], если n<0 | |||
* [[I-решётка (Каллисто)|I#]] — Преобразует одну цифру целого числа и записывает её в выходной буфер [[PAD]] | |||
* [[I-решётка-S (Каллисто)|I#S]] — Преобразует целое число до тех пор, пока не будет получен 0 | |||
* [[меньше-I-решётка (Каллисто)|<I#]] — Начинает процесс преобразования целого числа в последовательность кодов символов. | |||
* [[(.)]] — Как [[I.]] -- только не выводит число на [[индикатор]], а возвращает адрес и длину строки. | |||
* [[I.]] — Вывод целого числа, за которым следует один пробел. | |||
* [[. (Каллисто)|.]] — Вывод числа, за которым следует один пробел. | |||
* [[I.R]] — Напечатать n на терминале в поле длиной p справа. | |||
* [[LIST]] — Распечатывает экран с номером u и записывает его номер в переменную [[SCR]] | |||
* [[INDEX]] — Выводит на экран верхние строчки экранов, номера блоков которых входят в диапазон от нач до кон. | |||
* [[WORDS]] — Просмотр полного списка операторов, хранящихся в данный момент в словаре | |||
* [[COPY]] — Копирует экран n на экран m | |||
* [[DEPTH]] — Выдаёт в [[Стек данных|стек]] полное количество чисел, хранившихся в стеке до исполнения этой команды. | |||
* [[DUMP]] — Отображает u байт памяти начиная с адреса a | |||
* [[.S]] — Распечатка всего содержимого [[Стек данных|стека]], оставляющая [[Стек данных|стек]] без изменений. | |||
* [[КАТ]] — Поиск на электронном диске каталога Форта и переход в него. Если каталога нет, он создаётся. | |||
* [[SAVE-TEXT]] — Сохранить область текста в энергонезависимую память. | |||
* [[RGRW]] — Чтение/запись файла регистров (словаря) в загруженном каталоге. | |||
* [[LORW]] — Чтение/запись блока из файла в загруженном каталоге. | |||
* [[R/W]] | |||
* [[SAVE"]] — Сохранить в файлы словарь Форта и десятичный словарь. | |||
* [[LOAD"]] — Считать из файлов словарь Форта и десятичный словарь, должны быть от той же версии Каллисто. | |||
* [[;CODE]] | |||
* [[FORTH]] — Делает словарь [[FORTH]] контекстным. | |||
* [[TASK]] — Последнее стандартное слово в словаре. | |||
== Ссылки == | == Ссылки == | ||
* [https://vk.com/topic-10838600_30361028 Обсуждение Каллисто в Контакте], [http://mk-152.livejournal.com/53935.html в живом журнале] и [http://arbinada.com/pmk/ru/node/1195 на сайте Арбинады] | * [https://vk.com/topic-10838600_30361028 Обсуждение Каллисто в Контакте], [http://mk-152.livejournal.com/53935.html в живом журнале] и [http://arbinada.com/pmk/ru/node/1195 на сайте Арбинады] | ||
* [http://the-hacker.ru/ | * [http://the-hacker.ru/2015/Callisto-0.3.5a.zip Каллисто v0.3.5a], последняя актуальная версия Каллисто | ||
* Языки [https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Форт] и [https://ru.wikipedia.org/wiki/ColorForth colorFORTH] в Википедии | |||
* Языки [https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Форт] и [https://ru.wikipedia.org/wiki/ColorForth colorFORTH | * [https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%BE_%28%D1%81%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA%29 Каллисто в Википедии] — спутник Юпитера, в честь которого назван язык Каллисто | ||
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%BE_%28%D1%81%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA%29 Каллисто в Википедии] — спутник Юпитера, в честь которого назван | |||
[[Категория:Программы для ЭКВМ]] | [[Категория:Программы для ЭКВМ]] |