-=RUS=- | Дата: Понедельник, 28.07.2014, 22:51 | Сообщение # 1 |
 Генералиссимус
Группа: Администраторы
Сообщений: 352
Статус: Offline
| ************************************************************** * РАСШИРЕННЫЙ ФОКАЛ ДЛЯ БК-0010 XFOCAL, SZ/10-87 * * 610000, г.КИРОВ, ул.ДЕРЕНДЯЕВА 44, кв.8, ЗИЛЬБЕРШТЕЙН С.М. * * тел.24513 * **************************************************************
Записал с имеющегося текста Зальцман Ю.А., г.Алма-Ата. В связи с наличием дефектов в тексте, в данном описании возможны ошибки! *************
Программа ХFOCAL расширяет возможности интерпретатора языка ФОКАЛ в следующих направлениях:
- Экранное редактирование; - Использование восьмеричных чисел; - Запись подпрограмм в машинных кодах и их вызов; - Условные операторы "в строку"; - Дозагрузка программ; - Создание точечных картинок формата 32*N и вывод их на экран (средства мультипликации); - Воспроизведение музыкальных фраз.
Программа XFOCAL занимает 1,6 Кбайт оперативной памяти и работает в адресах 34600-37777. Программа является полностью перемещаемой, и при необходимости может быть сдвинута в другие адреса. При этом адреса за программой могут быть использованы для подпрограмм в кодах или для мультипликационных картинок.
ОГРАНИЧЕНИЯ ПРОГРАММЫ XFOCAL: ----------------------------- - Операторы ФОКАЛА могут занимать только одну строку; - Работа с текстами программ на ФОКАЛЕ возможна только в режиме 64 символа в строке без инверсии; - Знаки, одинаковые по начертанию (например, "А" Рус., и "А" Лат.) вводятся с экрана, как один и тот же (меньший из двух) код; - В текстовых константах нельзя использовать коды редактирова- ния в режиме БЛРЕД.
ВЫЗОВ ПРОГРАММЫ XFOCAL: ----------------------- Р М<ВВОД> ? М<ВВОД> ИМЯ? XFOCAL<ВВОД> ? S<ВВОД>
1.ЭКРАННОЕ РЕДАКТИРОВАНИЕ. -------------------------- С помощью клавиш управления курсором и клавиш редактирова- ния можно перемещаться по экрану, при необходимости изменяя его содержимое. Ввод в память строки, отмеченной курсором (в любой позиции), и ее обработка осуществляется по клавише <ВВОД>. Из строки воспринимается информация, записанная в позициях 2-64.
ЗНАЧЕНИЕ КЛАВИШ:
<ГТ> - Вставить на экране пустую строку; <ВС> - Перейти в начало строки; <СБР> - Очистить экран; <КТ> - "ГОТОВНОСТЬ К РАБОТЕ", стирание переменных; <СТОП> - Выход в интерпретатор по прерыванию.
Для редакции номера строки - набрать новый номер строки, после чего нажать <ВВОД>: появится строка с новым номером, но сохранится и старая.
При выводе текста оператором WRITE после каждых 23 строк происходит приостанов вывода до нажатия клавиши:
<ВВОД> - Вывод следующих 23 строк; <ПРОБЕЛ> - Окончить вывод.
2.ИСПОЛЬЗОВАНИЕ ВОСЬМЕРИЧНЫХ ЧИСЕЛ. ----------------------------------- Восьмеричные числа могут быть записаны в программе с по- мощью функции:
FOCT(ЧИСЛО)
3.ЗАПИСЬ ПРОГРАММ В МАШИННЫХ КОДАХ. ----------------------------------- Запись машинных команд и восьмеричных данных по заданному адресу осуществляется с помощью оператора MODIFY, используемого в новом смысле:
М АДРЕС:КОМАНДА[,КОМАНДА]...
Адрес задается восьмеричным числом или именем переменной, данные - восьмеричными числами. Оператор MODIFY должен стоять последним или единственным в строке.
ПРИМЕР - добавление в язык логических функций "AND","OR","XOR":
C ---ФУНКЦИЯ "AND"--- S AND=FOCT(30000) M AND:010100,005100,040200,207 С ---ФУНКЦИЯ "OR"--- S OR=AND+8 M OR:010100,050200,207 C ---ФУНКЦИЯ "XOR"--- S XOR=OR+6 M XOR:010100,074200,207
4.ВЫЗОВ ПОДПРОГРАММ В МАШИННЫХ КОДАХ. ------------------------------------- Осуществляется с помощью функции:
FCALL(АДРЕС[,ПАРАМ1[,ПАРАМ2[,ПАРАМ3]]])
Адрес подпрограммы задается восьмеричным числом или именем переменной. Параметры задаются в общих случаях выражениями со значением от -32768 до 32767. Передача параметров осуществляет- ся через регистры R1, R2, R3 соответственно; Возврат результата через регистр R0.
ПРИМЕР - использование определенных в П.3 логических фун- кций:
S Z=FCALL(XOR,X,Y) S Z=FCALL(OR,FCALL(AND,X1,Y1),FCALL(AND,X2,Y2))
5.УСЛОВНЫЕ ОПЕРАТОРЫ "В СТРОКУ". --------------------------------
IF EQ(ВЫРАЖЕНИЕ) ОПЕРАТОР[;ОПЕРАТОР]...
Значение выражения сравнивается с нулем; Если операция от- ношения выполнена, выполняются операторы строки. Можно исполь- зовать операторы:
EQ (РАВНО) NE (НЕ РАВНО) GT (БОЛЬШЕ) LT (МЕНЬШЕ) GE (БОЛЬШЕ ИЛИ РАВНО) LE (МЕНЬШЕ ИЛИ РАВНО)
ПРИМЕР - анализ введенного символа:
10.10 S R=FCHR(-1) 10.20 I EQ(R-65) T "БУКВА А",!; S TP=0; G 10.50 10.30 I EQ(R-68) T "БУКВА D",!; S TP=2; G 10.50 10.40 T "НЕВЕРНЫЙ ОТВЕТ",! 10.50 ..........
6.ДОЗАГРУЗКА ПРОГРАММ С МЛ. --------------------------- Догрузка программ с МЛ с записью ее в конец уже имеющейся в памяти программы осуществляется с помощью оператора:
LIBRARY GET+ ИМЯ (или: L G+ ИМЯ)
Все номера строк загружаемой программы должны быть больше номеров строк программы в памяти.
7.СОЗДАНИЕ КАРТИНОК ДЛЯ МУЛЬТИПЛИКАЦИИ. --------------------------------------- Картинка для мультипликации содержит 32 точки в ширину и произвольное число линий в высоту. В памяти картинка занимает 1+2*N слов: в первом слове находится число линий в картинке, а каждые два последующих слова задают линию (один бит слова соот- ветствует одной точке; Биты в слове записываются в обратном по- рядке). Картинка может быть задана с помощью описанного в П.3 опе- ратора MODIFY, однако более удобно и наглядно ее можно задать с помощью операторов MODIFY в следующем виде:
М АДРЕС:КОЛИЧЕСТВО ЛИНИЙ (ВОСЬМЕРИЧНОЕ ЧИСЛО!) М [... 32 СИМВОЛА ...] М [... 32 СИМВОЛА ...] . . . . . . . . . . .
М [... 32 СИМВОЛА ...]
Знаки [ и ] в операторе MODIFY являются записываемыми зна- ками, а не признаками необязательного элемента. Каждый символ между скобками задает точку: пробел - точки нет, любой другой - точка есть. Изображение задается прямо, без какого - либо пре- образования. В цветном изображении каждой точке будут соответствовать два символа. В этом случае сначала следует задать черно-белую картинку, в которой пробелы и символы встречаются парами, а за- тем заменить каждую пару на сочетание, определяющее цвет: про- бел-пробел, пробел-символ, символ-пробел или символ-символ. В черно-белом варианте за счет "расплывания" точек можно получить сплошное полутоновое изображение, задавая точки в ли- нию через одну.
ПРИМЕР:
М 30000:12 М [ M ] М [ MMMMMMMMMM ] М [ MMMMMMMMMMM ] М [ MMMMMMMMMMM ] М [ MMMMMMMMMM ] M [M MMMMMMMMMM ] М [MMM M MM ] М [ MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ] М [ MM MMM MMM MMM MMMMM ] М [ MMMMMMMMMMMMMMMMMMMMMMMM ]
Другие ПРИМЕРЫ см. в демонстрационных ПРОГРАММАХ "МОРЕ" и "ТРЕНИРОВКА".
8.ВЫВОД КАРТИНОК НА ЭКРАН. -------------------------- Осуществляется с помощью функции FPUT следующего вида:
FPUT(АДРЕС,Х,Y,ТИП[,АДРЕС,X,Y,ТИП]...)
Адрес картинки задается восьмеричным числом или именем пе- ременной. Координаты X и Y задаются в общем случае, как в гра- фических операторах ФОКАЛа, выражениями и соответствуют верхне- му левому углу картинки. Тип вывода задается числом:
0 - Вывод картинки со стиранием фона; 1 - Объединение картинки с фоном с помощью операции "ИЛИ"; 2 - Объединение картинки с фоном с помощью операции "ИСКЛЮЧАЮЩЕЕ ИЛИ".
Для статических картинок наиболее удобен вывод с типом 1. Для динамических картинок возможны два варианта:
1) Выводить картинку с типом 0, смещая ее на n точек на каждом шаге; При этом N горизонтальных или вертикальных линий на стороне, противоположной движению должны быть пустыми.
2) Вывести картинку с типом 2; Затем в цикле выводить кар- тинку (также с типом 2) два раза: Один раз со старыми координа- тами Х и Y (стирание старой картинки и восстановление фона), второй - со смещением по координатам. Из-за недостаточной ско- рости вывода изображение в этом варианте скорее всего будет мерцать, однако задний план будет полностью сохраняться.
Для создания эффекта бега, полета, танца и т.п. Необходимо заготовить набор картинок с различными фазами движения, а затем выводить эти вазы в цикле (индексируя адрес картинки).
ВОСПРОИЗВЕДЕНИЕ МУЗЫКАЛЬНЫХ ФРАЗ. --------------------------------- Осуществляется с помощью оператора MUSIC (M) следующего ви- да:
MUSIC "ОПЕРАНД[ОПЕРАНД]... "
Операнды записываются непосредственно друг за другом, либо разделяются пробелами или запятыми. В качестве операнда может быть записано:
О1-О7 - Задание октавы; Первой октаве соответствует 04 (значение по умолчанию). Указание октавы действует до следующего операнда "О"; Т1-Т7 - Задание темпа. При Т1 и Т7 темп изменяется примерно в 1,5 раза в ту или другую сторону по отношению к Т4 (значение по умолчанию). Указание темпа действует до следующего операнда "Т"; НДЛИТ - Задание длительности для нот, в которых длительность не указана явно: 1,2,4,8,16,32 - соответственно це- лая, половина, четверть и т.д., по умолчанию - Н4. Указание неявной длительности действует до следующего операнда "Н"; НОТА[# или $][ДЛИТ][.] - - Воспроизведение звука; Имена нот задаются буквами: D, R, M, F, S, L, C; "#" - ДИЕЗ; "$" - БЕМОЛЬ; Длительности: 1,2,4,8,16,32; "." - увеличение Длительности в 1,5 раза; Р[ДЛИТ][.] - - Пауза.
Оператор MUSIC должен быть последним или единственным в строке.
ПРИМЕР:
M "MDMDFMRP O3SSSL8C8O4DDD"
Другие ПРИМЕРЫ см. в демонстрационной программе "МУЗЫКА". ---------------------------------------------------------------
Обо всех ошибках и неточностях программы XFOCAL просьба сообщать автору.
|
|
| |
dev | Дата: Воскресенье, 21.11.2021, 18:37 | Сообщение # 2 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Под-форума для языка программирования LISP пока нет, поэтому временно помещу здесь
Прошу Админа создать такой
Представлю новый проект: Интерпретатор языка программирования LISP для микро-компьютера БК-0010.01 архитектуры PDP-11, на процессоре К1801ВМ1.
https://github.com/ufasoft/bklisp
|
|
| |