Вход

Просмотр полной версии : Бейсик для Специалиста



Zidane
01.10.2022, 18:56
В общем, суть сабжа: документации на ВАСИК для ZX Spectrum превеликое множество, а для Специалист чуть да маленько. Вот и зацепило. Сам BASIC для Специалист является портом с Радио-86РК, на который он, в свою очередь, попал с Микро-80. И вот имеем три компьютера, описание интерпретатора которых раскидано едва ли не в десятке журналов. Ну я и собрал по возможности всю эту инфу в один документ, чтобы не шастать и не искать если вдруг чего надо. Мануал охватывает только самые базовые команды, без CIRCLE. Различия при работе в Радио-86РК и Специалист я тоже постарался описать. Ну и вот новый(старый) материал по любимой железке готов. Хотя бы такой. Сильно сомневаюсь, что кому-то понадобится, но мало ли. В общем, держите ))))

https://disk.yandex.ru/i/gXA2Q4CvNKi1VQ

Zidane
02.10.2022, 03:54
Забыл USR() описать.. Ну да ладно, в следующем релизе )))

fifan
02.10.2022, 07:35
За документацию спасибо. В названии темы добавил а в конце (слово Специалист склоняется). Поищу место на сайте и туда перемещу данное описание.

В файле прикриплённом к "расширителю Бейсика" (http://xn----7sbombne2agmgm0c.xn--p1ai/Soft/basic_ext.rar) уже было описание Бейсика, взятое с журнала Моделист-конструктор от 1988 №6 (http://xn----7sbombne2agmgm0c.xn--p1ai/Docs/mk1988_06.djvu). Справочник Бейсика будет находится в архиве basic_ext.rar

Zidane
04.10.2022, 20:58
Вопрос пользователям "специалист"-а. Скоро будет второй релиз справочника, во многом поправленный и дополненный двумя программами на BASIC. Если такого рода бумажка (с примерами программ на BASIC) будет выходить хотя бы раз в месяц, будет ли она представлять хоть какой-то интерес для сообщества? В начале все программы будут в текстовом режиме, то бишь совместимы со "Специалист"/"Радио-86РК". Но потом придется писать только под Специалист, потому как различия в графике достаточно сильные.
Но это... Хммм... Возможно, издание, планируется быть ориентированным в основном на BASIC, хотя исключения подпрограмм на ассемблер не избежать, слишком уж он медленный. Выпуски в основном будут о играх ) Алгоритмы, все дела. Графика это ведь второе - была бы идея....

fifan
05.10.2022, 15:57
В любом случае пополнение справочника необходимо. Для полной сохранности всю документацию я продублирую на сайте.

Zidane
05.10.2022, 19:35
Итак, новый релиз справочникаhttps://disk.yandex.ru/i/gXA2Q4CvNKi1VQ Предыдущую ссылку поправил. Книжка и для 86РК пойдет, но лень туда закидывать. Найдут - найдут. Ну а нет - не судьба )
Постарался исправить все по максимуму. Если что и не влезло, то теперь уже в следующий выпуск. В нем, судя по всему, придется рассмотреть свою таблицу символов. А то уж больно одним капсом писать напрягает.

И еще. Тем кому лень набирать, игра 'acey-ducey' в формате rks https://disk.yandex.ru/d/ca5gPaaJcp87dA. Загружаем следующим образом: в Специалист (или эмулятор) грузим BASIC3.rks (в архиве). Набираем команду MLOAD и грузим файл. В эмуляторе откроется окно, где нужно выбрать файл aceyducey.rks. Ну а потом все как обычно.

CityAceE
06.10.2022, 11:40
Итак, новый релиз справочника
Этот текст вполне похож если не на небольшую книгу, то на брошюру. Отсюда пожелания:
- Добавить титульный лист с указанием автора, версии, года
- Добавить оглавление
- Добавить на все страницы верхний (с названием) и нижний (нумерация) колонтитулы
- Неплохо бы добавить и иллюстрации (например, скриншоты с листингами, результат работы примеров и т.д.)

Zidane
06.10.2022, 15:34
Этот текст вполне похож если не на небольшую книгу, то на брошюру. Отсюда пожелания:
- Добавить титульный лист с указанием автора, версии, года
- Добавить оглавление
- Добавить на все страницы верхний (с названием) и нижний (нумерация) колонтитулы
- Неплохо бы добавить и иллюстрации (например, скриншоты с листингами, результат работы примеров и т.д.)

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

Но вот вопрос к профессионалам. В каких ячейках хранится адрес страницы символов "Специалист". При ковырянии прошивки обнаружилось лишь перемещение значений в ячейки 8FDF и 8FE7

fifan
06.10.2022, 16:32
Ещё хорошо бы проверить текст на синтаксис, при просмотре иногда появляются залипания соседних слов.

CityAceE
06.10.2022, 22:35
Этот справочник, по сути, родился спонтанно, когда я в очередной раз пытался найти описание нужной мне команды.
Подозреваю, что некоторые книги так и создаются. Собственно, если этот справочник дополнить примерами и чуть расширить описание команд, то получится вполне себе книга.

Zidane
08.10.2022, 21:33
Ну-с, последний релиз. Больше обновляться точно не будет. Потому что мне самому достаточно, а заниматься этим дальше я не готов. Не то, чтобы шибко популярная тема.
https://disk.yandex.ru/i/gXA2Q4CvNKi1VQ

Все ссылки поправил. А Содержание кривое потому что ни один онлайн ковертер в пдф не знает ни одного монотипного шрифта. Рукой махнул....

CityAceE
09.10.2022, 09:46
Ну вот, отлично же получилось! Прекрасный результат! :v2_thumb:

Zidane
09.10.2022, 10:55
Ну вот, отлично же получилось! Прекрасный результат! :v2_thumb:
С очепятками... Впрочем, примеры работы команд вполне однозначно дают понять, что и как работает. Может ссыль повесить в раздел 86РК?

fifan
09.10.2022, 17:36
Интересно вот Бейсик грузится в начало ОЗУ, а нельзя ли его прошить в ПЗУ и запускать оттуда или много переходов нужно переделывать?

Zidane
09.10.2022, 17:42
Интересно вот Бейсик грузится в начало ОЗУ, а нельзя ли его прошить в ПЗУ и запускать оттуда или много переходов нужно переделывать?

Да вроде можно. Точно не скажу, а только по моему в каком-то из М-К (#7 1987г.) была инструкция как BASIC и другие системные программы зашить в ПЗУ и вставить их в свободные разъемы на плате. Как раз по моему полный пакет Микрон там и обсуждался... Но это не точно.

На то же сайте специалист-пк.рф ссылка и есть на нужный журнал, напротив BASIC... И даже указаны микросхемы, в которые нужно заливать прошивку. Учитывая, что и остальные системные программы грузятся в те же адреса, сам собой напрашивается вывод - а нельзя ли сделать разъем, и вставлять туда картриджи с прошитым в ПЗУ программой. Примерно как сменные картриджи на игровых консолях.

Кстати, народ.. Могу написать книгу в духе "Как написать игру для "Специалист" на BASIC. Вот ежели кому будет интересно - благодарности под постом. Штук 10 если наберем, то сделаю в течении месяца.

Zidane
12.10.2022, 20:23
Ну-с, не судьба ))) На вахту скоро, так что голосовалка больше не актуальна. Но продолжаем развивать тему BASIC и чем BASIC для Специалист-а отличается от такового для ZX. Ведь именно для ZX основное количество литературы по программированию игр на BASIC.

Самое первое. Символы в Специалист выводятся в режиме наложения. Всегда. То есть в режиме "исключающего или". Что это значит? А то, что стереть предыдущую запись просто напечатав поверх нее пробелы не получится. Для удаления предыдущей надписи, надо поверх нее вывести точно такую же. А потом новую.
Второе: кратность позиции курсора по горизонтали составляет 2 точки. Если двигать надпись, то получается довольно плавно. Хотя эффект от расчетов позиции каждой новой буквы заметен. Но движение получается намного более плавным, чем в том же ZX Spectrum. Но еще раз повторюсь - скорость вывода символов не сравнить. Придется наверное писать свою подпрограмму для вывода с кратностью 8 (ну по знакоместам) по горизонтали. Думается такой момент прибавит скорости работы программ. Что касается вертикального движения, то там ничего придумывать не нужно. Абсолютная линейность экранной области ОЗУ Специалист" сильно упрощает расчет вертикальной позиции следующего знака., фактически сводя его к +/- 1 к адресу.
Ну и наконец третье, самое муторное. Своя таблица символов. Нужность её для Специалист-а трудно переоценить. Если для разработки каких-то небольших программ КОИ-7Н2 хватает, то вот для чего-то большего нужны хотя бы строчные буквы. В М-К 4'89 приведен вариант ПЗУ для Специалист. Но нам оттуда нужны только коды символов. Начинаются с адреса D100, каждая строка дампа описывает 2 символа. Например в самой D100 описаны пробел и восклицательный знак. С остальным проблем возникнуть не должно. Но учите, что без изменения ПЗУ, вероятнее всего, можно использовать только КОИ7Н1 (в журнале коды КОИ8). То есть нужно описать символы с кодами от 20H до 7ЕН - 95 символов, если кто сразу не сообразит. В принципе можно конечно впихивать не буквы, а псевдографику - тут уж кому как хочется. Дальнейшие пояснения даны из расчета, что таблица находится по адресу 7000H. Собственно, у Специалист ссылка на кодовую страницу хранится в ячейках 8FE7H и 8FE8H. Так вот, значение по умолчанию там А0 и 18 соответственно. Чтобы подключить таблицу символов с адреса 7000H, нужно в ячейку 8FE7H поместить значение 00, а в 8FE8H - значение 0EH. Для другого адреса таблицы значение нужно пересчитать. Менять адрес таблицы символов крайне рекомендую только программное. Но можете и в ручную. Просто будьте готовы столкнуться ровно с теми же проблемами, что и программисты Spectrum - BASIC: адрес поменял, символы все поменялись - и как теперь набрать нужную команду? Впрочем, у Специалист-а при сбросе память не очищается, так что при перезагрузке ничего критичного произойти не должно... Но вы действуете на свой страх и риск ) Ух..
Надо бы и по этому материалу брошюрку с примерами собрать... Может и успею до вахты.

Zidane
23.10.2022, 20:18
В процессе подготовки к следующему стриму а заодно и материалов к новой писульке, сделал табличку адресации экранной области компьютера "Специалист". Так как на сайте гораздо больше пользователей этого компьютера, чем приходит на мои стримы, вешаем сюда, вдруг кому и поможет. На рисунке несколько соответствий 16-ричных и десятичных адресов в экранной области ОЗУ компьютера, показано направление адресации ячеек памяти и приведена формула расчета позиции нужного байта экранной области ОЗУ из BASIC, потому что в ассемблере все просто элементарно... Пользуйтесь, если нужно )
https://disk.yandex.ru/i/aLj4WiWpr9Hcig

CityAceE
24.10.2022, 10:45
вешаем сюда, вдруг кому и поможет
Наверное, так будет удобнее:

https://pic.maxiol.com/images2/1666597360.780858384..png

nzeemin
02.05.2023, 15:56
В общем, суть сабжа: документации на ВАСИК для ZX Spectrum превеликое множество, а для Специалист чуть да маленько. Вот и зацепило. Сам BASIC для Специалист является портом с Радио-86РК, на который он, в свою очередь, попал с Микро-80. И вот имеем три компьютера, описание интерпретатора которых раскидано едва ли не в десятке журналов. Ну я и собрал по возможности всю эту инфу в один документ, чтобы не шастать и не искать если вдруг чего надо. Мануал охватывает только самые базовые команды, без CIRCLE. Различия при работе в Радио-86РК и Специалист я тоже постарался описать. Ну и вот новый(старый) материал по любимой железке готов. Хотя бы такой. Сильно сомневаюсь, что кому-то понадобится, но мало ли. В общем, держите ))))

https://disk.yandex.ru/i/gXA2Q4CvNKi1VQ

Спасибо, отличное описание.
Странно что в обсуждении идёт сравнение с ZX Basic, потому что тут явно видно что разработчики смотрели на MSX Basic, вплоть до совпадения кодов ошибок: https://www.msx.org/wiki/MSX-BASIC
Для меня лично в описании не хватает описания типов, особенно -- какие используются форматы представления чисел с плавающей точкой.

CityAceE
01.11.2023, 20:43
В этой теме не хватает самого Бейсика, который описывается в этой брошюре. Есть хотя бы ссылка на него?

Zidane
17.02.2024, 18:07
В этой теме не хватает самого Бейсика, который описывается в этой брошюре. Есть хотя бы ссылка на него?

BASIC (https://disk.yandex.ru/d/dIC0nXIlGBtoDQ) собственно, взято с сайта специалист-пк.рф. Правда там он по моему в сборнике софта какого то шел. Как-то я пропустил этот вопрос.


Спасибо, отличное описание.
Странно что в обсуждении идёт сравнение с ZX Basic, потому что тут явно видно что разработчики смотрели на MSX Basic, вплоть до совпадения кодов ошибок: https://www.msx.org/wiki/MSX-BASIC
Для меня лично в описании не хватает описания типов, особенно -- какие используются форматы представления чисел с плавающей точкой.

Сравнение с zx-basic как с одним из самых популярных диалектов языка на просторах бывшего СССР по моему более чем очевидно. Что касается типов данных, то их всего два: числа и строки. И все. Точка в отображении числа не учитывается, так что число 999999 это максимальное, которое можно отобразить средствами basic без автоматического перевода в экспоненциальный вид.

CityAceE
02.04.2024, 17:29
Написал на скорую руку конвертер листинга BASIC-программы из текстового формата сразу в RKS. Никаких проверок на корректность текста не делается! Так что чуть что скрипт будет падать. Но в целом готов поработать в данном направлении, если возникнет потребность.
Текст может быть набран в любом регистре - всё принудительно будет переведено к нужному знаменателю.
Зато сделал поддержку кириллицы. Но! Текст с кириллицей обязательно должен быть в Win-кодировке, то есть никакого Unicode. Иначе будет падать.
Имя BASIC-программы формируется из имени файла: откдидывается расширение и всё переводится в КОИ-7 Н2, то есть кириллица тоже возможна.
Сильно не тестировал. Но какие баги нашёл, те исправил.

Использование простое:


C:\> python bas2rks.py ИМЯ_КОНВЕРТИРУЕМОГО_ФАЙЛА


Жду фидбека и багрепорта :)

CityAceE
02.04.2024, 20:05
Кроме токенов от 80h до CEh (CLS - EDIT) есть еще два
CF - & (шестнадцатеричные)
D0 - AT (не реализовано)
Точно! Посмотрел более внимательно и понял, что хвост обрезал при перекодировке. Добавил эти два кода.


Текст с кириллицей обязательно должен быть в Win-кодировке, то есть никакого Unicode. Иначе будет падать.
Современные ОС всё-таки по умолчанию используют Unicode. Переделал в Unicode, но теперь другие кодировки обрабатываются некорректно. Нестандартные для Специалиста коды типа обратных и фигурных кавычек, знака № и т.д. заменяются на символ "*".

Исправленную версию пока не выкладываю, жду ещё исправлений.

Очень сильно надеюсь, что конвертор подстегнёт кого-то поучаствовать в продолжении РЕТРОГРАДА. А что? Добавить подсветку синтаксиса в Notepad++ (могу сделать) и вперёд!

Zidane, пока писал конвертер активно пользовался брошюрой! Очень помогла, спасибо! Нашёл пару опечаток:



В качестве примеров программ в книге приведены листинги двух игр. Они очень
прости, но вполне помогают понять суть программирования на BASIC .




100 INPUT "ТВОЙ ОТВЕТ"

Должно быть: 100 INPUT "ТВОЙ ОТВЕТ";C

Ещё не нашёл как в BASIC задать имя. Оно в файле имеется и при загрузка BASIC "ПРАКТИК" отображается, но как его задать средствами Специалиста я не знаю. Или это какая-то специальная версия Basic нужна?

https://pic.maxiol.com/images2/1712077350.780858384.basic.png

Zidane
03.04.2024, 05:23
ну брошюрка составлялась для BASIC "Микрон", который, в общем-то, является общим для обеих компьютеров. А практик только для "Специалист"а. Правда там в различных релизах используется варианты CSAVE/MSAVE, после оператора указывается имя файла в двойных кавычках. Ну и при загрузке - CLOAD/MLOAD "имя_файла". Имя файла будет производиться в самом файле, а не в его отображаемом названии в диспетчере файлов. А так как вариантов basic для "Специалист" великое множество и самых разных, охватить все вариации в, настолько общей, брошюре, возможности не было.

yevrowl
11.12.2025, 23:00
Жду фидбека и багрепорта

Спасибо за полезную утилиту!

Вот склепал исходник логической игры Brain Teaser для ПК «Специалист» — 83319

Утилитой не конвертируется:

83318

CityAceE
12.12.2025, 06:30
Утилитой не конвертируется
А я предупреждал, что при каждом чихе будет падать ;) Там в самом конце текстовика с исходником последним затесался байт #1A. Если его удалить, то всё конвертируется. Но при запуске ругается на первую же строку - CLS. По синтаксису после CLS должна стоять цифра, обозначающая в какой цвет красить экран при очистке.

yevrowl
12.12.2025, 10:52
Там в самом конце текстовика с исходником последним затесался байт #1A.
Этот символ остался от GW-Basic'а, которым перенумеровывал строки, обычно конфликтов не вызывает.


Но при запуске ругается на первую же строку - CLS.
А как удалось исходник перенести в эмулятор? Не грузится ни из меню, ни командой MLOAD в Бейсике.


По синтаксису после CLS должна стоять цифра, обозначающая в какой цвет красить экран при очистке.
Спасибо, добавил единицу, чтобы оставить чёрный фон.

CityAceE
12.12.2025, 11:44
А как удалось исходник перенести в эмулятор? Не грузится ни из меню, ни командой MLOAD в Бейсике.
У меня Emu80 из Бейсика (попробовал разные) по MLOAD загружает конвертированный файл (RKS).