User Tag List

Показано с 1 по 10 из 20

Тема: Поиск описания бэйсиков 86рк

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от uart Посмотреть сообщение
    Инструкцию не видел, еще был подобный ассемблер.
    Не был, а это оно и есть. То есть два в одном.

    Меня заинтересовал данный бейсик. Поскольку документации нет, пришлось дизассемблировать (люблю я это дело, всякие там бейсики/форты дизассемблировать).
    Странное оно. С виду, в коде довольно много оригинальных идей, но некоторые части написаны откровенно плохо. Например умножение/деление сделано итеративным сложением/вычитанием.
    В паре мест тоже есть вопросы, походу файл немного битый. Полагаю, работает не всё.

    Написал свою документацию на SBASIC - MICROPOSOL 04.91:

    Скрытый текст

    Список операторов командной строки (не могут встречатся в тексте программы или быть скомпилированы):

    MAIN ARRAY MONITOR ASSEMBLER BASIC CSAVE CLOAD LIST CONT NEW RUN RENUM REGION SLOAD SSAVE AUTO ASAVE ALOAD VARIABLE

    Список операторов бейсика:

    COPY DPOKE NEXT LET IF GOTO GOSUB RETURN REM READ RESTORE FOR INPUT PRINT POKE STOP END CALL OUT DATA DEF EI DI INTERRUPT EXIT RST ON ORG

    Список функций бейсика:

    SGN INP RND ABS SIZE PEEK DPEEK RLC RRC

    Операторы бейсика:

    + - * / >= <> > = <= < ^ ! & %

    Директивы ассемблера:

    ORG END SET DS DB DW

    ----------------------------------------------------------------

    Краткое описание операторов командной строки

    ----------------------------------------------------------------

    NEW

    Очистка программы

    LIST
    LIST num
    LIST num,count

    Вывод программы, num - с какой строки, count - максимальное количество строк

    RUN

    Запуск (интерпретация) программы

    CONT

    Продолжение выполнения после STOP

    CLOAD
    CSAVE

    Загрузка/сохранение программы на кассету в бинарном виде. Параметров (например имя программы) нет.

    SLOAD
    SSAVE

    Загрузка/сохранение программы на кассету в виде текста.

    ALOAD
    ALOAD start
    ALOAD start,step
    ASAVE

    Загрузка/сохранение программы на кассету в виде текста без номеров строк, для программ на ассемблере. Номера строк при загрузке формируются автоматически, start - номер первой строки, step - шаг нумерации

    AUTO
    AUTO start
    AUTO start,step

    Автонумерация строк, параметры аналогично ALOAD. Полезно при вводе программ на ассемблере.

    RENUM
    RENUM start
    RENUM start,step

    Перенумерация строк, параметры аналогично AUTO, большого смысла для программ на бейсике не имеет, т.к. GOTO не модифицируются. Полезно при вводе программ на ассемблере.

    REGION size

    Задаёт максимальный размер региона для скомпилированной программы. По-умолчанию 2Кб.

    MAIN
    MAIN (h,l)

    Задаёт начальный адрес (см. директиву ORG) скомпилированной программы. h - старший байт адреса, l - младший. По-умолчанию определяется командой REGION.

    ARRAY
    ARRAY (h,l)

    Задаёт начальный адрес массива, этот адрес используется только для скомпилированной программы, в режиме интерпретации массивом будет вся свободная память. По-умолчанию 0, в этом случае желательно не использовать массив в скомпилированной программе.

    MONITOR
    MONITOR (h,l)

    Задаёт начальный адрес векторов runtime подпрограмм для скомпилированной программы. Возможно, эта runtime могла располагаться в ПЗУ. По-умолчанию 103h.

    VARIABLE
    VARIABLE (h,l)

    Задаёт начальный адрес блока памяти для переменных. По-умолчанию 38DCh. Используется только для режима интерпретации. Теоретически, если установить этот адрес равным адресу блока переменных в скомпилированной программе, можно считывать переменные после завершения работы программы.

    BASIC opts
    ASSEMBLER opts

    Компилирует программу, написанную на бейсике/ассемблере. Опции могут быть такие:

    0 первый проход с сохранением таблицы символов (?)
    1 первый проход ассемблера
    2 второй проход с выдачей листинга
    3 второй проход с выдачей листинга на магнитофон
    4 второй проход с записью кода по заданному адресу (см. MAIN)
    5 запись исходного текста на ассемблере на магнитофон
    S выдать таблицу символов

    Т.е. для компиляции нужно ввести BASIC 14


    ----------------------------------------------------------------

    Краткое описание операторов бейсика

    ----------------------------------------------------------------

    LET var=expr [, var2=expr2 ...]

    Оператор присваивания, LET можно не писать.

    PRINT "текст" [, ...]
    PRINT expr [, ...]
    PRINT #width, expr [, ...]

    Оператор вывода. Можно ставить несколько запятых подряд, на каждую "лишнюю" будет выведен пробел. Текст может быть в одинарных или двойных кавычках, а также символы вида ^X (без кавычек).

    INPUT ["текст",] var [, ...]

    Оператор ввода. Текст - аналогично PRINT, однако нельзя несколько раз подряд, между текстами обязательно должна быть переменная.

    FOR var=expr TO expr2 [STEP expr3]
    NEXT var

    Оператор цикла. Имя переменной в NEXT обязательно.

    IF expr AnotherOps

    Условный оператор. Если выражение равно нулю (или чётное) остаток строки пропускается, иначе выполняется. THEN отсутствует.

    GOTO line
    GOSUB line

    Операторы перехода/вызова подпрограмм.

    RETURN

    Выход из подпрограммы.

    ON expr GOTO line,line[,line ...]
    ON expr GOSUB line,line[,line ...]
    ON ERROR GOTO line

    Переход по индексу/ошибке.

    REM любой текст

    Комментарий.

    DATA expr,expr[,expr]

    Данные. Можно использовать выражения. При компиляции пропускается (до конца строки, не используются).

    READ var

    Считывает данные. При компиляции пропускается (до конца строки, не используются).

    RESTORE

    Переносит указатель данных на первый DATA в программе. При компиляции пропускается (до конца строки, не используются).

    STOP

    Останов программы, продолжить можно при помощи CONT. При компиляции игнорируется.

    END

    Останов программы без возможности продолжить.

    DEF FN X(var)=expr

    Определение функции X (однобуквенная).

    POKE (h,l),expr
    DPOKE (h,l),expr

    Запись байта/слова в память по адресу h*256+l.

    CALL
    CALL (h,l)

    Вызов скомпилированной/произвольной подпрограммы.

    OUT port,val

    Вывод в порт.

    EI
    DI

    Разрешение/запрещение прерываний.

    INTERRUPT num,line[,num2]

    Устанавливает обработчик прерывания num. num2 - непонятно пока.

    EXIT

    Выход из прерывания. Возможен вход в другой обработчик, если во время обработки возникло другое прерывание.

    RST num

    Выполняет инструкцию RST процессора. В данной версии вектора прерываний располагаются как раз в области 0008-0038, так что например командой RST 1 можно симулировать прерывание номер 1.

    ORG (h,l)

    Аналогична ассемблерной директиве ORG, за исключением формата параметра. В режиме интерпретации игнорируется.

    COPY text

    Копирует text непосредственно в ассемблерный листинг, т.е. фактически, это ассемблерная вставка. В режиме интерпретации игнорируется.


    ----------------------------------------------------------------

    Краткое описание математических операторов и функций бейсика

    ----------------------------------------------------------------

    + - * / >= <> > = <= <

    Стандартные математических операторы для целых чисел. Кроме того имеются:

    ^ унарный оператор инверсии бит
    ! операция побитового OR
    & операция побитового AND
    % операция побитового XOR

    ABS(expr)

    Абсолютное значение expr.

    SGN(expr)

    Знак expr в виде чисел -1,0,1

    RND(expr)

    Псевдослучайное число, expr делитель, на него делится случайное число из диапазона 0-65535. Возвращается остаток от деления. Алгоритм случайного числа очень плохой.

    SIZE

    Выдаёт количество свободной памяти.

    PEEK(h,l)
    DPEEK(h,l)

    Считывает байт/слово из памяти по адресу h*256+l.

    RLC(val,count)
    RRC(val,count)

    Циклически сдвигает байт val на count бит.

    INP(port)

    Считывает байт из порта port.


    ----------------------------------------------------------------

    Переменные и другие особенности бейсика.

    ----------------------------------------------------------------

    В данном бейсике есть только целочисленные (двухбайтовые) однобуквенные переменные A-Z, а также однобайтовые переменные A$-Z$ с побитовым доступом, т.е. например A$[4,2] это два бита расположенные со сдвигом на 4 бита влево. Однако адрес блока переменных можно менять оператором VARIABLE. Этот оператор единственный, который можно также использовать в программе, но только в режиме интерпретации. В режиме компиляции он недопустим.

    Массивов, как таковых, в этом бейсике нет, но есть специальная переменная @, которую можно считать массивом. В режиме интерпретации она даёт доступ ко всей свободной памяти, т.е. максимальный индекс можно вычислить как SIZE/2-1. Для режима компиляции её адрес задаётся командой ARRAY. Аналогично однобайтовым переменным с побитовым доступом, можно использовать массив как байты, но в отличие от переменных это будут те-же байты свободной памяти, максимальный индекс SIZE-1. Примеры обращения к массиву:

    @(0)=1
    PRINT @(0)
    @$[1,2](1)=3
    PRINT @(0)
    PRINT @$[2,2](1)

    Например @$[0,8](3) это старший байт числа @(1).

    Особенностью этого бейсика является также возможность сокращать операторы при помощи точки. Например можно писать ASS. вместо ASSEMBLER, например:

    ASS. 12

    покажет листинг программы на ассемблере.
    [свернуть]
    Последний раз редактировалось b2m; 13.11.2025 в 13:48.

    Эти 2 пользователя(ей) поблагодарили b2m за это полезное сообщение:

    uart(27.11.2025), yevrowl(14.11.2025)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 9
    Последнее: 01.07.2016, 00:23
  2. Описания 500 игр Солон 1,2,3,4 (6?)
    от ^m00h^ в разделе Пресса
    Ответов: 66
    Последнее: 15.02.2012, 19:17
  3. Подробные описания игр выпуск 3,2,1
    от AAA в разделе Пресса
    Ответов: 78
    Последнее: 05.01.2010, 23:24
  4. Описания RST #10 IS-DOS
    от SinglWolf в разделе Оси
    Ответов: 20
    Последнее: 11.03.2009, 10:20
  5. Ответов: 10
    Последнее: 03.07.2007, 17:02

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •