Пятница, 29.03.2024, 16:37

..



Главная Регистрация Вход
Приветствую Вас, Гость · Браузер: « v»
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Всё об «Электроника БК0010(-01), БК0011(М)»! » Языки программирования » Фокал » Описания языка » «XFocal» [xx.10.87] (Автор: SZ [Зильберштейн С.М.])
«XFocal» [xx.10.87]
-=RUS=-Дата: Понедельник, 28.07.2014, 22:51 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 352
Репутация: 1
Статус: 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
Репутация: 0
Статус: Offline
Под-форума для языка программирования LISP пока нет, поэтому временно помещу здесь

Прошу Админа создать такой

Представлю новый проект:
Интерпретатор языка программирования LISP для микро-компьютера БК-0010.01 архитектуры PDP-11, на процессоре К1801ВМ1.

https://github.com/ufasoft/bklisp
 
Всё об «Электроника БК0010(-01), БК0011(М)»! » Языки программирования » Фокал » Описания языка » «XFocal» [xx.10.87] (Автор: SZ [Зильберштейн С.М.])
  • Страница 1 из 1
  • 1
Поиск:

-=RUS=-
ICQ: 320867225
asr-corp@yandex.ru
bk001x@yandex.ru