User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 20 из 20

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

  1. #11

    Регистрация
    21.09.2025
    Адрес
    г. Санкт-Петербург
    Сообщений
    11
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Здравствуте!
    Может кто помочь или подсказать, где в коде бейсика Микрон найти вывод псевдографических операторов по горизонтали на экран. Я изменил экран у РК86 на 80х60, в коде бейсика нашел где изменить начальные и максимальные координаты экрана для полей символьных операторов и AT x,y и CUR x,y и максимальное значение для ветикальной координаты псевдографических операторов, а для горизонтали никак не найду.
    Может у кого есть ассемблер с комментариями?

    Этот пользователь поблагодарил ValCher за это полезное сообщение:

    yevrowl(30.10.2025)

  2. #12

    Регистрация
    21.09.2025
    Адрес
    г. Санкт-Петербург
    Сообщений
    11
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вроде как нашел где идет проверка величины по -Х, но как, где и что исправлять уже не в моих силах. Поставил костыль -00 по адресу -$194B.

    Этот пользователь поблагодарил ValCher за это полезное сообщение:

    yevrowl(07.11.2025)

  3. #13

    Регистрация
    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)

  4. #14

    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    964
    Спасибо Благодарностей отдано 
    83
    Спасибо Благодарностей получено 
    138
    Поблагодарили
    75 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ValCher Посмотреть сообщение
    а для горизонтали никак не найду.
    Ищите последовательность
    Код:
    3A 27 00	lda	TERMINAL_X
    FE 48		cpi	048H    ;максимальная позиция по Х
    вместо 048H будет другое значение

    Этот пользователь поблагодарил Alex_LG за это полезное сообщение:

    ValCher(18.11.2025)

  5. #15

    Регистрация
    21.09.2025
    Адрес
    г. Санкт-Петербург
    Сообщений
    11
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alex_LG, Спасибо!
    Всё облазил, но не нашел.
    Что сделал: (адреса совпалают с журнальным В.МИКРОН)

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

    Код:
    	                X18f7:
    18F7	CD DC 0E         call	X0edc
    18FA	FE 50            cpi	50h     ; ROWS
    18FC	D2 14 05         jnc	X0514
    18FF	4F               mov	c,a
    1900	C5               push	b
    1901	CD D8 0E         call	X0ed8
    1904	C1               pop	b
    1905	47               mov	b,a
    1906	FE 3C            cpi	3ch     ; LINES
    1908	D2 14 05         jnc	X0514
    190B	E5               push	h
    190C	21 10 DF         lxi	h,Xdf10 ; X,Y - 0,0 
    190F	11 B0 FF         lxi	d,Xffb0 ; 0-$FFB0=$50 ROWS
    	                X1912:
    1912	B7               ora	a
    1913	CA 1B 19         jz	X191b
    1916	19               dad	d
    1917	3D               dcr	a
    1918	C3 12 19         jmp	X1912
    	                ;
    	                X191b:
    191B	57               mov	d,a
    191C	59               mov	e,c
    191D	19               dad	d
    191E	D1               pop	d
    191F	C9               ret
    	                ;--- CUR
    	                X1920:
    1920	CD F7 18         call	X18f7
    1923	22 00 CB         shld	Xcb00
    1926	3E 3D            mvi	a,3dh   ; CURSOR - Y
    1928	90               sub	b
    1929	67               mov	h,a
    192A	79               mov	a,c
    192B	32 63 20         sta	X2063
    192E	C6 00            adi	0       ; CURSOR - X
    1930	6F               mov	l,a
    1931	22 02 CB         shld	Xcb02
    1934	EB               xchg
    1935	C9               ret
    	                ;--- PLOT
    1936	CD DC 0E         call	X0edc
    1939	32 54 20         sta	X2054
    193C	CD D8 0E         call	X0ed8
    193F	32 55 20         sta	X2055
    1942	CD D8 0E         call	X0ed8
    1945	32 56 20         sta	X2056
    	                X1948:
    1948	3A 54 20         lda	X2054
    194B	00               NOP     	; поставил - 0, оригинал - B7h
    194C	FA 14 05         jm	X0514	; переход при X>127
    194F	3A 55 20         lda	X2055
    1952	FE 78            cpi	78h     ; LINES*2 псевдографика - Y
    1954	D2 14 05         jnc	X0514
    1957	AF               xra	a
    1958	3A 54 20         lda	X2054
    195B	1F               rar
    195C	5F               mov	e,a
    195D	79               mov	a,c
    195E	1F               rar
    195F	4F               mov	c,a
    1960	AF               xra	a
    1961	3A 55 20         lda	X2055
    1964	1F               rar
    1965	57               mov	d,a
    1966	79               mov	a,c
    1967	17               ral
    1968	17               ral
    [свернуть]

    Сейчас корректно работает PLOT, CUR, AT. LINE чудит, короткие отрезки строит нормально по всему полю, длинные непредсказуемо.
    Экранная область 80х64, скрыты по две строки сверху и снизу.
    Последний раз редактировалось ValCher; 18.11.2025 в 12:42.

  6. #16

    Регистрация
    14.05.2013
    Адрес
    г. Москва
    Сообщений
    264
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Не был, а это оно и есть. То есть два в одном.
    Не, был чисто ассемблер, меньше места занимал.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

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

    По умолчанию

    Цитата Сообщение от uart Посмотреть сообщение
    Не, был чисто ассемблер, меньше места занимал.
    Ну, может и был. Пойди найди тот ножичек...

  9. #18

    Регистрация
    06.09.2025
    Адрес
    г. Киев, Украина
    Сообщений
    240
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Подскажите пожалуйста, каким образом следует загружать Бейсик, а заодно передавать и сохранять исходники?

    Нажмите на изображение для увеличения. 

Название:	radio-86rk.png 
Просмотров:	14 
Размер:	219 байт 
ID:	83278

    Частично выяснил:
    Код:
    L
    , затем
    Код:
    J 1C00
    Передавать исходный текст можно при помощи Emu80 (Отображение → Вставить текст), но остался вопрос про сохранение программ.

    P. S. Выяснил, что исправленный «Бейсик-Микрон» сохраняет при помощи команды CSAVE.
    Последний раз редактировалось yevrowl; 05.12.2025 в 15:59.
    ÷)

  10. #19

    Регистрация
    06.09.2025
    Адрес
    г. Киев, Украина
    Сообщений
    240
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Написал свою документацию на SBASIC - MICROPOSOL 04.91
    Спасибо за документацию. Исходя из части этих сведений:

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

    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
    [свернуть]


    ...этот диалект Бейсика для Радио-86РК компилируемый? Возможно ли сохранение компилированной программы? Будет ли таковая запускаться в РК ДОС?
    ÷)

  11. #20

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

    По умолчанию

    Цитата Сообщение от yevrowl Посмотреть сообщение
    ...этот диалект Бейсика для Радио-86РК компилируемый? Возможно ли сохранение компилированной программы? Будет ли таковая запускаться в РК ДОС?
    Да, программа на Бейсике или Ассемблере может быть скомпилирована. Результат будет лежать в памяти адресу, указанному оператором MAIN. Сохранить эту программу можно было бы на магнитофон из монитора, и работает она тоже по тем же адресам (предположительно, есть ещё ORG, скорее всего можно компилировать для размещения программы по другим адресам).

    Какие условия должны соблюдаться, чтобы программа работала из РК ДОС, я не знаю.

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

    yevrowl(06.12.2025)

Страница 2 из 2 ПерваяПервая 12

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

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

Эту тему просматривают: 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

Ваши права

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