Насколько мне известно, для Специалиста были прошивки ПЗУ со встроенным Бейсиком (чтобы не загружать его с ленты каждый раз). По-моему для этого были нужны еще несколько ПЗУ. Есть ли у кого-нибудь прошивки для этих ПЗУ?
Вид для печати
Насколько мне известно, для Специалиста были прошивки ПЗУ со встроенным Бейсиком (чтобы не загружать его с ленты каждый раз). По-моему для этого были нужны еще несколько ПЗУ. Есть ли у кого-нибудь прошивки для этих ПЗУ?
Здесь в архиве - программы для Специалиста, в том числе и Бейсики различные.
Формат RKS следующий:
2 байта адрес загрузки бинарника
2 байта размер бинарника
далее сам бинарник :)
Адрес и размер в нотации i8080, т.е. младший байт первым.
Решил посмотреть, как сделали рисование окружности в специалистовском бейсике (МК90/12, стр.28) и натолкнулся на курьез. Похоже имеющиеся варианты бейсика с кругом были неправильно введены и никто их никогда не пробовал и не проверял :)
Я смотрел здесь (BAS-CIR.RKS) и здесь. Нужно исправить байт по адресу 25A7 с 28 на 2B. В журнале напечатано так, что действительно можно принять 2B за 28, но это, конечно же, неправильно.
Это еще не все. Похоже сами авторы тоже не проверяли свои примеры использования процедуры приведенные в журнале. Для правильной работы нужно перед каждым рисованием окружности делать POKE9548,0.
Для иллюстрации правильности замены 28 на 2B пара картинок:
Вложение 67569Вложение 67570
Влияние отсутствия POKE9548,0 при желании можете проверить сами.
Понимаю, что рисование кругов не особо востребовано, но неужели никто действительно не пробовал? Или есть в архивах правильный вариант?
А я помню, что всегда рисовал их через SIN/COS...
В дампе (и в упомянутых файлах) еще одна ошибка - по адресу 256B нужно заменить 40 на 4C, тогда не надо каждый раз делать POKE9548,0. В журнале четко 40, получается это ошибка набора. Хотя я не знаю технологии публикаций, если дамп предоставили авторы, то это все же их ошибка.
- - - Добавлено - - -
Приложил вариант бейсика с полностью исправным рисованием окружностей соответствующим описанию в журнале
Увидел, что в бейсике-практик 3.1 предусмотрен токен CIRCLE, но его обработки нет, если в программе встретится CIRCLE то просто выход в монитор. Добавил туда рисование круга из МК90/12, но с человеческим синтаксисом, без объединения в одном аргументе двух параметров и без POKE.
CIRCLE Xцентра,Yцентра,радиус,[маска дуг]
Последний параметр необязательный, по умолчанию будет 0, т.е. полный круг. В качестве бонуса совместимость с z80, как и здесь.
Еще немного посмотрел бейсик-практик, чтобы составить общее впечатление. На мой взгляд это объединение 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'у за предоставленные программы. Я попробую Бейсик воткнуть в прошивку и попробую на вновь собранном эмуляторе. Там нужна сплошная прошивка (12 кБайт) исходя из этого вопрос: какой лучше Бейсик использовать и с какого адреса запускать?
Вижу, что Ewgeny7 сравнительно успешно пробовал практик (только клавиатура тогда не вполне корректно работала, но это ведь вроде починили?).
Если я правильно понял, то требуется вариант именно с прошивкой в пзу и "доставанием" оттуда для начала работы. Подобная готовая пзушка наверняка существует, но я не местный и у меня ее нет. А в принципе сделать можно с любым, который влезет в 12-2(загрузчик)-2(монитор)=8 Кб. Практик в 8 не сожмется, надо попроще. Загружать же туда с "магнитофона" ничего нельзя, т.е. задача просто запустить бейсик и понажимать клавиши? Если так, то любой маленький подойдет.
Можно попробовать грузить Бейсик в ОЗУ, он лежит в адресах 0000...2AE1. А как грузятся сами примеры? Сначала хочу проверить в эмуляторе emu от b2m.
Я так понял, речь была об Кассета №05 - Бейсик - учебная?
Я немного потерял нить, но постараюсь найти. Для примера прикрепил к "стандартному" пзу некий бейсик-астрон.
Пересылка по рабочим адресам:
TD000,EA5F,0
Запуск как обычно
G
Можно попробовать в emu, нужно BIOSbasA.ROM положить в каталог Specialist в emu и в Specialist.cfg поменять
bios : Memory {
- rom="Specialist\bios.rom"
rom="Specialist\biosbasa.rom"
}
- - - Добавлено - - -
Да
В клоны и варианты бейсика Волкова (в т.ч. астрон в BIOSbasA.ROM) - MLOAD. В варианты бейсика-микрон - CLOAD. Я не вникал в эмулятор на ESP8266, там можно грузить с "магнитофона"? Если можно, то возникает вопрос - что именно планируется грузить, какую программу. Исходя из этого надо выбрать бейсик.
Пока не до конца понимаю как это сделать, автор проекта куда-то делся. Но он как-то писал, что можно грузить в любую область ОЗУ и ПЗУ, т.е. если получится, то грузить ОЗУ+ПЗУ порядка 48 кБайт. В этом случае не важен размер Бейсика. Я пробовал уже на эмуляторе загружать вот этот образ, 12 кБайт (Монитор+Бейсик Микрон 2). Так же для запуска Бейсика нужно выполнить: TD000,EFFF,0000 <ВК>, G0000 <ВК>
- - - Добавлено - - -
Ещё вопрос. Просмотрев примеры Бейсик программ я не нашёл в них заголовка с адресами куда они грузятся. Каждый раз в разную область памяти или есть стандартное расположение?
Вопрос к ivagor - как Вы 'дорабатываете' бейсики, в том смысле у Вас есть дизассмеблированный текст, или просто правки в HEX? Вопрос с прицелом, сделать загрузку/вызрузку бейсик программ с/на SD карту в SDOS. Подобное для Галаксии я уже сделал, вот на Специалисте было б интересно сделать так же. Возможно вообще переделать сами функции MLOAD и MSAVE в бейсике, те адаптировать бейсик под работу с SD картой используя функции SDOS. Пример взаимодействия сторонней программы с функциями SDOS, так же на Галаксии, уже обкатан в музплеере PT2(3) файлов.
В этом случае можно будет в эмуляторе (например emu) собирать готовый rks (бейсик+интересующая программа) и использовать его на ESP. Для примера сборка практика+карате. Загружаем в монитор (R), запускаем (G) и запускаем карате (RUN).
100% дизассемблеров у меня нет. Есть 99% дизасм векторовского бейсика 2.5, для других компов и бейсиков поменьше, но на большинстве советских ретрокомпов на 8080 вариации микрософтовского бейсика 3.2 и в принципиальных моментах они все одинаковые. Для специалистовских я дизассемблировал только интересующие меня фрагменты бейсика. Свои "патчи" комбинирую с бейсиком в hex-редакторе.
И еще вопрос по 'склейке' rks (бейсик+интересующая программа). Из rks бейсик файла просто выбрасывается три ведущих D3 и приклеить со смещением 2AF0h и все, или надо еще и служебные ячейки какие то поправлять под размер бейсик программы? Есть ли вообще информация о rks структуре бейсик файла, его размере? Что за маркер в конце файла, там два байта каких то?
- - - Добавлено - - -
Увидел, что не просто склейка, а по адресам 0245-024А трижды прописан конец бейсик текста...
Это не все, есть и более трудоемкая операция - программа после загрузки адаптируется к адресу загрузки, все ссылки на следующие строки актуализируются.
Если скорость загрузки не на первом месте (все равно будет на порядки быстрее, чем с магнитофона), то можно не переделывать серьезно 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 - и бейсик и операционка
Это как я в Редактор текстов "Практик" (это который ED^7000) под Орионом встраивал поддержку ORDOS вместо мафона. И таки работало.
Оказалось, что в бейсиках с графическими и музыкальными доработками Волкова биперный синтезатор реализован в виде фазового аккумулятора. Интересное решение, впервые вижу такое в бипере для 8080.
Музыкальная сторона в одном моменте своеобразная. Для упрощения реализации буквы не соответствуют традиционным обозначениям нот, но это документировано в описании. А вот то, что ми-диез=ми не документировано (фа-бемоль=ми, си-диез=до следующей октавы, тут все ожидаемо).
Волков же теоретик музыки (что-то там с нотами ) ,
Еще же под Специалист дофига бейсиков, и с музыкой под бипер и с музыкой под ВИ53 (sp-580)
Графика от Волкова оптимальна ?
Насчет того, что автор Специалиста еще и теоретик музыки я сомневаюсь, но хороший электронщик тоже творческий человек. Графика от Волкова оптимальна в историческом смысле, что он ее сделал в то время, когда она была востребована, а по скорости разогнать можно.
«Волков не относится к этому событию жизни как к чему-то очень значимому, ну а для оформления нужна "энергия" и время. На сколько мне известно Анатолий Волков нынче интересуется - как бы сформулировать точнее? "математикой" музыки, история развития музыки, чистый и темперированный строй,синтез и распознание музыкальных звуков...»
http://www.nedopc.org/forum/viewtopi...=9672&start=75
разогнать графику и ускорить математику было б супер
Читал ту ветку на nedopc, просто у меня в итоге не сложилось мнение, что Волков стал теоретиком музыки (в академическом смысле), скорее то что он заинтересовался этой областью и у него есть идеи. Но это мое восприятие, на единственную правильность не претендую.
Про модификацию бейсиков могу только сказать в общем, что у каких-нибудь версий что-нибудь буду потихоньку подкручивать.