PDA

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



Prusak
08.06.2009, 09:01
Насколько мне известно, для Специалиста были прошивки ПЗУ со встроенным Бейсиком (чтобы не загружать его с ленты каждый раз). По-моему для этого были нужны еще несколько ПЗУ. Есть ли у кого-нибудь прошивки для этих ПЗУ?

fifan
08.06.2009, 11:59
Здесь в архиве - программы для Специалиста, в том числе и Бейсики различные.
Формат RKS следующий:
2 байта адрес загрузки бинарника
2 байта размер бинарника
далее сам бинарник :)
Адрес и размер в нотации i8080, т.е. младший байт первым.

ivagor
07.01.2019, 20:05
Решил посмотреть, как сделали рисование окружности в специалистовском бейсике (МК90/12, стр.28) и натолкнулся на курьез. Похоже имеющиеся варианты бейсика с кругом были неправильно введены и никто их никогда не пробовал и не проверял :)
Я смотрел здесь (http://emu80.org/files/s_2.zip) (BAS-CIR.RKS) и здесь (http://www.spetsialist-mx.ru/Soft/basic_gr_circle.rar). Нужно исправить байт по адресу 25A7 с 28 на 2B. В журнале напечатано так, что действительно можно принять 2B за 28, но это, конечно же, неправильно.
Это еще не все. Похоже сами авторы тоже не проверяли свои примеры использования процедуры приведенные в журнале. Для правильной работы нужно перед каждым рисованием окружности делать POKE9548,0.
Для иллюстрации правильности замены 28 на 2B пара картинок:
6756967570
Влияние отсутствия POKE9548,0 при желании можете проверить сами.
Понимаю, что рисование кругов не особо востребовано, но неужели никто действительно не пробовал? Или есть в архивах правильный вариант?

HardWareMan
07.01.2019, 20:28
А я помню, что всегда рисовал их через SIN/COS...

ivagor
08.01.2019, 10:07
Похоже сами авторы тоже не проверяли свои примеры использования процедуры приведенные в журнале. Для правильной работы нужно перед каждым рисованием окружности делать POKE9548,0.
В дампе (и в упомянутых файлах) еще одна ошибка - по адресу 256B нужно заменить 40 на 4C, тогда не надо каждый раз делать POKE9548,0. В журнале четко 40, получается это ошибка набора. Хотя я не знаю технологии публикаций, если дамп предоставили авторы, то это все же их ошибка.

- - - Добавлено - - -

Приложил вариант бейсика с полностью исправным рисованием окружностей соответствующим описанию в журнале

ivagor
08.01.2019, 17:15
Увидел, что в бейсике-практик 3.1 предусмотрен токен CIRCLE, но его обработки нет, если в программе встретится CIRCLE то просто выход в монитор. Добавил туда рисование круга из МК90/12, но с человеческим синтаксисом, без объединения в одном аргументе двух параметров и без POKE.
CIRCLE Xцентра,Yцентра,радиус,[маска дуг]
Последний параметр необязательный, по умолчанию будет 0, т.е. полный круг. В качестве бонуса совместимость с z80, как и здесь (https://zx-pk.ru/threads/26438-spetsialist-emulyatsiya.html?p=866961&viewfull=1#post866961).

ivagor
09.01.2019, 18:34
Еще немного посмотрел бейсик-практик, чтобы составить общее впечатление. На мой взгляд это объединение 1) Бейсика Волкова с графическими и музыкальными/звуковыми наворотами + 2) сервисных возможностей бейсика-микрон + 3) некоторых дополнительных сервисных возможностей. По пункту 3 чуть подробнее. В практике есть дополнительные операторы:
COMP (вероятно COMPRESSION) - убирает незначащие пробелы из программы.
RCOM (вероятно REM COMPRESSION) - убирает операторы REM (но соответствующие номера строк остаются) и незначащие пробелы из программы.
SYST (вероятно SYSTEM) - выход в монитор с записью C8 и C2 в ячейки 8FE5 и 8FE6.
"Компрессоры" конкретно для специалистовского бейсика в прессе вроде не публиковались, но публиковались для РК86, на котором практически бейсик-близнец (если не считать графику и звук).
Я проникся идеями Волкова и решил сделать вариант 3.2 без принудительной установки цвета в CIRCLE. Здесь цвет устанавливается предшествующим PLOTом, как в LINE и DPL. Пример, демонстрирующий "цвета" 1, 2 и 4 прилагается. Другие "цвета"/режимы тоже можно попробовать использовать, но больше для прикола.

В выложенном HardWareManом архиве вместе с бейсиком-практиком есть ряд программ. Имхо самая интересная - карате Волкова. Почему-то она хотя и в архиве с практиком, но без контрольной суммы (я про rks, wav не пробовал), поэтому в многочисленных вариантах бейсика Волкова с наворотами она грузится (и работает) а в практик - нет. Прилагаю вариант с добавленной контрольной суммой для практика.
Еще забавный факт - программа из того же архива "05 - = НЕКОТОРЫЕ ВОЗМОЖНОСТИ БЕЙСИКА ПРАКТИК =.RKS" спокойно работает в любом варианте бейсика Волкова с наворотами, т.к. уникальных возможностей практика не использует. А кое-что там вроде взято у Волкова из журнала.

fifan
09.01.2019, 19:50
Спасибо ivagor'у за изыскания в Бейсике и HardWareMan'у за предоставленные программы. Я попробую Бейсик воткнуть в прошивку и попробую на вновь собранном эмуляторе (https://zx-pk.ru/threads/29112-emulyator-quot-spetsialista-quot-na-esp8266/page6.html). Там нужна сплошная прошивка (12 кБайт) исходя из этого вопрос: какой лучше Бейсик использовать и с какого адреса запускать?

ivagor
09.01.2019, 20:13
Вижу, что Ewgeny7 сравнительно успешно пробовал практик (https://zx-pk.ru/threads/29112-emulyator-quot-spetsialista-quot-na-esp8266.html?p=961851&viewfull=1#post961851) (только клавиатура тогда не вполне корректно работала, но это ведь вроде починили?).
Если я правильно понял, то требуется вариант именно с прошивкой в пзу и "доставанием" оттуда для начала работы. Подобная готовая пзушка наверняка существует, но я не местный и у меня ее нет. А в принципе сделать можно с любым, который влезет в 12-2(загрузчик)-2(монитор)=8 Кб. Практик в 8 не сожмется, надо попроще. Загружать же туда с "магнитофона" ничего нельзя, т.е. задача просто запустить бейсик и понажимать клавиши? Если так, то любой маленький подойдет.

fifan
09.01.2019, 20:20
Можно попробовать грузить Бейсик в ОЗУ, он лежит в адресах 0000...2AE1. А как грузятся сами примеры? Сначала хочу проверить в эмуляторе emu от b2m.

HardWareMan
09.01.2019, 20:22
Я так понял, речь была об Кассета №05 - Бейсик - учебная?

ivagor
09.01.2019, 20:31
Можно попробовать грузить Бейсик в ОЗУ, он лежит в адресах 0000...2AE1. А как грузятся сами примеры? Сначала хочу проверить в эмуляторе emu от b2m.
Я немного потерял нить, но постараюсь найти. Для примера прикрепил к "стандартному" пзу некий бейсик-астрон.
Пересылка по рабочим адресам:
TD000,EA5F,0
Запуск как обычно
G
Можно попробовать в emu, нужно BIOSbasA.ROM положить в каталог Specialist в emu и в Specialist.cfg поменять
bios : Memory {
- rom="Specialist\bios.rom"
rom="Specialist\biosbasa.rom"
}

- - - Добавлено - - -


Я так понял, речь была об Кассета №05 - Бейсик - учебная?
Да

fifan
09.01.2019, 20:33
Я немного потерял нить
Вот загрузился Бейсик, а как в него примеры грузить, файлы rks?

ivagor
09.01.2019, 20:48
В клоны и варианты бейсика Волкова (в т.ч. астрон в BIOSbasA.ROM) - MLOAD. В варианты бейсика-микрон - CLOAD. Я не вникал в эмулятор на ESP8266, там можно грузить с "магнитофона"? Если можно, то возникает вопрос - что именно планируется грузить, какую программу. Исходя из этого надо выбрать бейсик.

fifan
09.01.2019, 21:05
В клоны и варианты бейсика Волкова (в т.ч. астрон в BIOSbasA.ROM) - MLOAD. В варианты бейсика-микрон - CLOAD. Я не вникал в эмулятор на ESP8266, там можно грузить с "магнитофона"? Если можно, то возникает вопрос - что именно планируется грузить, какую программу. Исходя из этого надо выбрать бейсик.
Пока не до конца понимаю как это сделать, автор проекта куда-то делся. Но он как-то писал, что можно грузить в любую область ОЗУ и ПЗУ, т.е. если получится, то грузить ОЗУ+ПЗУ порядка 48 кБайт. В этом случае не важен размер Бейсика. Я пробовал уже на эмуляторе загружать вот этот образ, 12 кБайт (Монитор+Бейсик Микрон 2). Так же для запуска Бейсика нужно выполнить: TD000,EFFF,0000 <ВК>, G0000 <ВК>

- - - Добавлено - - -

Ещё вопрос. Просмотрев примеры Бейсик программ я не нашёл в них заголовка с адресами куда они грузятся. Каждый раз в разную область памяти или есть стандартное расположение?

ivagor
09.01.2019, 21:10
Просмотрев примеры Бейсик программ я не нашёл в них заголовка с адресами куда они грузятся. Каждый раз в разную область памяти или есть стандартное расположение?
Они грузятся начиная с начального адреса программы, который у каждого бейсика свой, т.е. это зависит не от программы, а от бейсика.

PVV
09.01.2019, 21:22
Вопрос к ivagor - как Вы 'дорабатываете' бейсики, в том смысле у Вас есть дизассмеблированный текст, или просто правки в HEX? Вопрос с прицелом, сделать загрузку/вызрузку бейсик программ с/на SD карту в SDOS. Подобное для Галаксии я уже сделал, вот на Специалисте было б интересно сделать так же. Возможно вообще переделать сами функции MLOAD и MSAVE в бейсике, те адаптировать бейсик под работу с SD картой используя функции SDOS. Пример взаимодействия сторонней программы с функциями SDOS, так же на Галаксии, уже обкатан в музплеере PT2(3) файлов.

ivagor
09.01.2019, 21:37
Но он как-то писал, что можно грузить в любую область ОЗУ и ПЗУ, т.е. если получится, то грузить ОЗУ+ПЗУ порядка 48 кБайт. В этом случае не важен размер Бейсика.
В этом случае можно будет в эмуляторе (например emu) собирать готовый rks (бейсик+интересующая программа) и использовать его на ESP. Для примера сборка практика+карате. Загружаем в монитор (R), запускаем (G) и запускаем карате (RUN).


есть дизассмеблированный текст, или просто правки в HEX?
100% дизассемблеров у меня нет. Есть 99% дизасм векторовского бейсика 2.5, для других компов и бейсиков поменьше, но на большинстве советских ретрокомпов на 8080 вариации микрософтовского бейсика 3.2 и в принципиальных моментах они все одинаковые. Для специалистовских я дизассемблировал только интересующие меня фрагменты бейсика. Свои "патчи" комбинирую с бейсиком в hex-редакторе.

PVV
09.01.2019, 23:16
И еще вопрос по 'склейке' rks (бейсик+интересующая программа). Из rks бейсик файла просто выбрасывается три ведущих D3 и приклеить со смещением 2AF0h и все, или надо еще и служебные ячейки какие то поправлять под размер бейсик программы? Есть ли вообще информация о rks структуре бейсик файла, его размере? Что за маркер в конце файла, там два байта каких то?

- - - Добавлено - - -

Увидел, что не просто склейка, а по адресам 0245-024А трижды прописан конец бейсик текста...

ivagor
10.01.2019, 07:29
Из rks бейсик файла просто выбрасывается три ведущих D3 и приклеить со смещением 2AF0h

по адресам 0245-024А трижды прописан конец бейсик текста
Это не все, есть и более трудоемкая операция - программа после загрузки адаптируется к адресу загрузки, все ссылки на следующие строки актуализируются.
Если скорость загрузки не на первом месте (все равно будет на порядки быстрее, чем с магнитофона), то можно не переделывать серьезно MLOAD, а хакнуть его на уровне вызовов процедуры чтения байта. Правда тогда придется добавить чуть "интеллектуальности" со стороны обслуживания SD.

PVV
10.01.2019, 13:13
Если скорость загрузки не на первом месте (все равно будет на порядки быстрее, чем с магнитофона), то можно не переделывать серьезно MLOAD, а хакнуть его на уровне вызовов процедуры чтения байта. Правда тогда придется добавить чуть "интеллектуальности" со стороны обслуживания SD.
Да, я увидел вызовы на С377, чтение по одному байту, для чтения с SD это не проблема, при вызове F_READ в ВС размер запрашиваемых данных, а при последующем вызове будут читаться данные дальше, с этим все ОК. Проблема в другом, как запросить нужный файл, те ввести имя файла. что то вида MLOAD BAS_FL.RKS, тк сейчас то такой вызов есть, но он это имя файла ищет в заголовке бейсик файла, а надо это имя искать на SD.
вот какие вызовы и параметры в SDOS:
;CALL FS_FNDF ; DE - name of file for finding, out HL - string FAT record of file, C==1 if file not founded
;CALL F_OPEN ; DE - name of file for opening, out C==1 if error
;CALL F_READ ; HL - addr for store readed data, BC - size of readed data, out A -last readed byte

те надо вызвать FS_FNDF, найти наш BAS_FL.RKS, затем вызвать F_OPEN, и только после вызывать F_READ с ВС=1, вместо С377.
Может ввести некий служебный оператор SETFNAME ? Тогда все решится просто и красиво, что на чтение, и, вероятно, на запись. Запись не смотрел, но, предполагаю, там аналогично.
Да, еще надо будет вызвать SD_ON и SD_OFF, соответственно.
SETFNAME: SD_ON, FS_FNDF, F_OPEN, SD_OFF
замена вызова С377 на F_READ с ВС=1
только нужно еще SD_ON и SD_OFF вставить, ну или пока на что не заморачиваться, пусть всегда SD_ON.

Для разных версий SDOS адреса функций свои, это вносит сложность, но все решаемо.

zx_
10.01.2019, 14:05
а добавить новые операторы для работы с sd ?
какойнибудь sload для начала
в идеале наверное , как в 3DOS - и бейсик и операционка

HardWareMan
10.01.2019, 16:17
Это как я в Редактор текстов "Практик" (это который ED^7000) под Орионом встраивал поддержку ORDOS вместо мафона. И таки работало.

ivagor
25.07.2019, 18:23
Оказалось, что в бейсиках с графическими и музыкальными доработками Волкова биперный синтезатор реализован в виде фазового аккумулятора. Интересное решение, впервые вижу такое в бипере для 8080.
Музыкальная сторона в одном моменте своеобразная. Для упрощения реализации буквы не соответствуют традиционным обозначениям нот, но это документировано в описании. А вот то, что ми-диез=ми не документировано (фа-бемоль=ми, си-диез=до следующей октавы, тут все ожидаемо).

zx_
25.07.2019, 20:45
Волков же теоретик музыки (что-то там с нотами ) ,

Еще же под Специалист дофига бейсиков, и с музыкой под бипер и с музыкой под ВИ53 (sp-580)

Графика от Волкова оптимальна ?

ivagor
26.07.2019, 05:31
Насчет того, что автор Специалиста еще и теоретик музыки я сомневаюсь, но хороший электронщик тоже творческий человек. Графика от Волкова оптимальна в историческом смысле, что он ее сделал в то время, когда она была востребована, а по скорости разогнать можно.

zx_
26.07.2019, 13:22
«Волков не относится к этому событию жизни как к чему-то очень значимому, ну а для оформления нужна "энергия" и время. На сколько мне известно Анатолий Волков нынче интересуется - как бы сформулировать точнее? "математикой" музыки, история развития музыки, чистый и темперированный строй,синтез и распознание музыкальных звуков...»

http://www.nedopc.org/forum/viewtopic.php?f=90&t=9672&start=75

разогнать графику и ускорить математику было б супер

ivagor
26.07.2019, 13:36
Читал ту ветку на nedopc, просто у меня в итоге не сложилось мнение, что Волков стал теоретиком музыки (в академическом смысле), скорее то что он заинтересовался этой областью и у него есть идеи. Но это мое восприятие, на единственную правильность не претендую.
Про модификацию бейсиков могу только сказать в общем, что у каких-нибудь версий что-нибудь буду потихоньку подкручивать.

fifan
26.07.2019, 16:07
у каких-нибудь версий что-нибудь буду потихоньку подкручивать.
Ждём результатов.