Просмотр полной версии : Специалист: Бейсик
Насколько мне известно, для Специалиста были прошивки ПЗУ со встроенным Бейсиком (чтобы не загружать его с ленты каждый раз). По-моему для этого были нужны еще несколько ПЗУ. Есть ли у кого-нибудь прошивки для этих ПЗУ?
Здесь в архиве - программы для Специалиста, в том числе и Бейсики различные.
Формат RKS следующий:
2 байта адрес загрузки бинарника
2 байта размер бинарника
далее сам бинарник :)
Адрес и размер в нотации i8080, т.е. младший байт первым.
Решил посмотреть, как сделали рисование окружности в специалистовском бейсике (МК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...
Похоже сами авторы тоже не проверяли свои примеры использования процедуры приведенные в журнале. Для правильной работы нужно перед каждым рисованием окружности делать POKE9548,0.
В дампе (и в упомянутых файлах) еще одна ошибка - по адресу 256B нужно заменить 40 на 4C, тогда не надо каждый раз делать POKE9548,0. В журнале четко 40, получается это ошибка набора. Хотя я не знаю технологии публикаций, если дамп предоставили авторы, то это все же их ошибка.
- - - Добавлено - - -
Приложил вариант бейсика с полностью исправным рисованием окружностей соответствующим описанию в журнале
Увидел, что в бейсике-практик 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).
Еще немного посмотрел бейсик-практик, чтобы составить общее впечатление. На мой взгляд это объединение 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" спокойно работает в любом варианте бейсика Волкова с наворотами, т.к. уникальных возможностей практика не использует. А кое-что там вроде взято у Волкова из журнала.
Спасибо ivagor'у за изыскания в Бейсике и HardWareMan'у за предоставленные программы. Я попробую Бейсик воткнуть в прошивку и попробую на вновь собранном эмуляторе (https://zx-pk.ru/threads/29112-emulyator-quot-spetsialista-quot-na-esp8266/page6.html). Там нужна сплошная прошивка (12 кБайт) исходя из этого вопрос: какой лучше Бейсик использовать и с какого адреса запускать?
Вижу, что Ewgeny7 сравнительно успешно пробовал практик (https://zx-pk.ru/threads/29112-emulyator-quot-spetsialista-quot-na-esp8266.html?p=961851&viewfull=1#post961851) (только клавиатура тогда не вполне корректно работала, но это ведь вроде починили?).
Если я правильно понял, то требуется вариант именно с прошивкой в пзу и "доставанием" оттуда для начала работы. Подобная готовая пзушка наверняка существует, но я не местный и у меня ее нет. А в принципе сделать можно с любым, который влезет в 12-2(загрузчик)-2(монитор)=8 Кб. Практик в 8 не сожмется, надо попроще. Загружать же туда с "магнитофона" ничего нельзя, т.е. задача просто запустить бейсик и понажимать клавиши? Если так, то любой маленький подойдет.
Можно попробовать грузить Бейсик в ОЗУ, он лежит в адресах 0000...2AE1. А как грузятся сами примеры? Сначала хочу проверить в эмуляторе emu от b2m.
HardWareMan
09.01.2019, 20:22
Я так понял, речь была об Кассета №05 - Бейсик - учебная?
Можно попробовать грузить Бейсик в ОЗУ, он лежит в адресах 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 - Бейсик - учебная?
Да
Я немного потерял нить
Вот загрузился Бейсик, а как в него примеры грузить, файлы rks?
В клоны и варианты бейсика Волкова (в т.ч. астрон в BIOSbasA.ROM) - MLOAD. В варианты бейсика-микрон - CLOAD. Я не вникал в эмулятор на ESP8266, там можно грузить с "магнитофона"? Если можно, то возникает вопрос - что именно планируется грузить, какую программу. Исходя из этого надо выбрать бейсик.
В клоны и варианты бейсика Волкова (в т.ч. астрон в BIOSbasA.ROM) - MLOAD. В варианты бейсика-микрон - CLOAD. Я не вникал в эмулятор на ESP8266, там можно грузить с "магнитофона"? Если можно, то возникает вопрос - что именно планируется грузить, какую программу. Исходя из этого надо выбрать бейсик.
Пока не до конца понимаю как это сделать, автор проекта куда-то делся. Но он как-то писал, что можно грузить в любую область ОЗУ и ПЗУ, т.е. если получится, то грузить ОЗУ+ПЗУ порядка 48 кБайт. В этом случае не важен размер Бейсика. Я пробовал уже на эмуляторе загружать вот этот образ, 12 кБайт (Монитор+Бейсик Микрон 2). Так же для запуска Бейсика нужно выполнить: TD000,EFFF,0000 <ВК>, G0000 <ВК>
- - - Добавлено - - -
Ещё вопрос. Просмотрев примеры Бейсик программ я не нашёл в них заголовка с адресами куда они грузятся. Каждый раз в разную область памяти или есть стандартное расположение?
Просмотрев примеры Бейсик программ я не нашёл в них заголовка с адресами куда они грузятся. Каждый раз в разную область памяти или есть стандартное расположение?
Они грузятся начиная с начального адреса программы, который у каждого бейсика свой, т.е. это зависит не от программы, а от бейсика.
Вопрос к ivagor - как Вы 'дорабатываете' бейсики, в том смысле у Вас есть дизассмеблированный текст, или просто правки в HEX? Вопрос с прицелом, сделать загрузку/вызрузку бейсик программ с/на SD карту в SDOS. Подобное для Галаксии я уже сделал, вот на Специалисте было б интересно сделать так же. Возможно вообще переделать сами функции MLOAD и MSAVE в бейсике, те адаптировать бейсик под работу с SD картой используя функции SDOS. Пример взаимодействия сторонней программы с функциями SDOS, так же на Галаксии, уже обкатан в музплеере PT2(3) файлов.
Но он как-то писал, что можно грузить в любую область ОЗУ и ПЗУ, т.е. если получится, то грузить ОЗУ+ПЗУ порядка 48 кБайт. В этом случае не важен размер Бейсика.
В этом случае можно будет в эмуляторе (например emu) собирать готовый rks (бейсик+интересующая программа) и использовать его на ESP. Для примера сборка практика+карате. Загружаем в монитор (R), запускаем (G) и запускаем карате (RUN).
есть дизассмеблированный текст, или просто правки в HEX?
100% дизассемблеров у меня нет. Есть 99% дизасм векторовского бейсика 2.5, для других компов и бейсиков поменьше, но на большинстве советских ретрокомпов на 8080 вариации микрософтовского бейсика 3.2 и в принципиальных моментах они все одинаковые. Для специалистовских я дизассемблировал только интересующие меня фрагменты бейсика. Свои "патчи" комбинирую с бейсиком в hex-редакторе.
И еще вопрос по 'склейке' rks (бейсик+интересующая программа). Из rks бейсик файла просто выбрасывается три ведущих D3 и приклеить со смещением 2AF0h и все, или надо еще и служебные ячейки какие то поправлять под размер бейсик программы? Есть ли вообще информация о rks структуре бейсик файла, его размере? Что за маркер в конце файла, там два байта каких то?
- - - Добавлено - - -
Увидел, что не просто склейка, а по адресам 0245-024А трижды прописан конец бейсик текста...
Из rks бейсик файла просто выбрасывается три ведущих D3 и приклеить со смещением 2AF0h
по адресам 0245-024А трижды прописан конец бейсик текста
Это не все, есть и более трудоемкая операция - программа после загрузки адаптируется к адресу загрузки, все ссылки на следующие строки актуализируются.
Если скорость загрузки не на первом месте (все равно будет на порядки быстрее, чем с магнитофона), то можно не переделывать серьезно MLOAD, а хакнуть его на уровне вызовов процедуры чтения байта. Правда тогда придется добавить чуть "интеллектуальности" со стороны обслуживания SD.
Если скорость загрузки не на первом месте (все равно будет на порядки быстрее, чем с магнитофона), то можно не переделывать серьезно 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 адреса функций свои, это вносит сложность, но все решаемо.
а добавить новые операторы для работы с sd ?
какойнибудь sload для начала
в идеале наверное , как в 3DOS - и бейсик и операционка
HardWareMan
10.01.2019, 16:17
Это как я в Редактор текстов "Практик" (это который ED^7000) под Орионом встраивал поддержку ORDOS вместо мафона. И таки работало.
Оказалось, что в бейсиках с графическими и музыкальными доработками Волкова биперный синтезатор реализован в виде фазового аккумулятора. Интересное решение, впервые вижу такое в бипере для 8080.
Музыкальная сторона в одном моменте своеобразная. Для упрощения реализации буквы не соответствуют традиционным обозначениям нот, но это документировано в описании. А вот то, что ми-диез=ми не документировано (фа-бемоль=ми, си-диез=до следующей октавы, тут все ожидаемо).
Волков же теоретик музыки (что-то там с нотами ) ,
Еще же под Специалист дофига бейсиков, и с музыкой под бипер и с музыкой под ВИ53 (sp-580)
Графика от Волкова оптимальна ?
Насчет того, что автор Специалиста еще и теоретик музыки я сомневаюсь, но хороший электронщик тоже творческий человек. Графика от Волкова оптимальна в историческом смысле, что он ее сделал в то время, когда она была востребована, а по скорости разогнать можно.
«Волков не относится к этому событию жизни как к чему-то очень значимому, ну а для оформления нужна "энергия" и время. На сколько мне известно Анатолий Волков нынче интересуется - как бы сформулировать точнее? "математикой" музыки, история развития музыки, чистый и темперированный строй,синтез и распознание музыкальных звуков...»
http://www.nedopc.org/forum/viewtopic.php?f=90&t=9672&start=75
разогнать графику и ускорить математику было б супер
Читал ту ветку на nedopc, просто у меня в итоге не сложилось мнение, что Волков стал теоретиком музыки (в академическом смысле), скорее то что он заинтересовался этой областью и у него есть идеи. Но это мое восприятие, на единственную правильность не претендую.
Про модификацию бейсиков могу только сказать в общем, что у каких-нибудь версий что-нибудь буду потихоньку подкручивать.
у каких-нибудь версий что-нибудь буду потихоньку подкручивать.
Ждём результатов.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot