У меня на Эве при 14 Мгц Мультисаунд миди не играет. Тишина. А должен? Вижу, в инструкции написано, что не гарантируется. На 3.5 и 7 хорошо играет.
У меня на Эве при 14 Мгц Мультисаунд миди не играет. Тишина. А должен? Вижу, в инструкции написано, что не гарантируется. На 3.5 и 7 хорошо играет.
Скрытый текст
https://drive.google.com/drive/folde...xZ83juCuaBe32I
Scorpion ZS 256 Turbo+/GMX 2MB/SMUC v1.3 OP/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Kbrd & Mouse Ctrl v2.5/Universal PS/2 Kbrd Ctrl/ZX WiFi
Leningrad 1/Sega Joy Adapter
DivGMX
ZX Spectrum +2A
ZX Evolution rev. C
TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
[свернуть]
izzx, не должен т.к. на 14 МГц у Эвы есть вейтстейты - пропуски тактов грубо говоря. Выход миди на Мультисаунде сделан согласно заветам Клайва, т.е. ногодрыгом, а значит любые отклонения частоты процессора критичны.
Ну, честно говоря, у меня уже есть прототип. И, даже, вроде как, работает: https://dai.ly/x8zp204
Но, так как я только учусь, там есть масса тонкостей, которые хотелось бы прояснить. Вот, как уточню все тонкости (или допилю сам, без ансамбля) -- поделюсь кодом.
TL;DR: есть знатоки +3 DOS, которые хотят послушать MIDI?
Значит, при переносе на +3 проблем там вылезло несколько, кратко можно их изложить как «+3 DOS это вам не TR-DOS, она подгребает под себя всю свободную память». То есть, без дополнительных прыжков, там места только на код, куда грузить данные, не говоря уже о собственно MIDI файлах -- решительно непонятно. Это нас не остановит, работающая версия, как я уже показывал, есть, дело в «proper» оформлении нужных решений.
В странице 7 (на? мне как-то «банк» привычнее), куда у Вас загружаются шаблоны экранов, там просто нет для них места, потому что именно в странице 7 +3 DOS держит все свои переменные. Это никак обойти нельзя, насколько я понимаю, сколько там есть места, столько и есть. Ещё бы выяснить, сколько именно...
Дальше, страницы 1, 3, 4 и 6 тоже (внезапно!) используются +3 DOS для кэша диска и RAM диска. Теоретически и то и другое отключаемо, но освободить (хотя бы частично) страницу 1 мне пока не удалось. 3, 4, 6 -- запросто, а чем затык с 1-й, непонятно.
Да, я там задавал вопросы на SC (не знаю, может, я недооцениваю количество +3 знатоков тут?), но там пока откликнулись только писатели.
В принципе, проблема может быть на данном этапе решена «в лоб», путём более эффективного сжатия экранов. Например, при использовании zx0, места в 7-й странице остаётся достаточно для +3 DOS. Но это очень усложняет сборку. Может, это и к лучшему, см. ниже.
И, да, проблема детектирования +3 DOS. Хотя, на мой взгляд, это не проблема. +3 DOS не с чем не совместима, ничего не может быть включено с ней одновременно, поэтому для +3 нужна отдельная сборка. Бонус -- можно не компилировать FAT32 и все интерфейсы для SD.
Ещё в +3e может быть до двух дисководов и до двух разделов жёсткого диска, причем, назначенных на произвольные устройства. Как эту информацию получить из системы, я, кажется, понял. А вот как в ZX MIDI Player отобразить произвольный набор устройств, я ещё даже и не смотрел.
- - - Добавлено - - -
Приехал я домой, подключил MT-32pi к Sizif'у и, что-то, не работает оно с максимальной скоростью процессора. В режиме +3, другие пока не пробовал. Определяет скорость правильно, а вот на выходе, похоже, мусор, что-то не совпадает. На 7MHz, вроде, живёт. Анализатор я куда-то засунул, пока посмотреть, что там выходит не могу. В теории на Sizif все частоты процессора поддерживаются?
То же, что и у Эвы - на 14 МГц у Сизифа есть вейтстейты - пропуски тактов грубо говоря. Выход миди сделан согласно заветам Клайва, т.е. ногодрыгом, а значит любые отклонения частоты процессора критичны.
- - - Добавлено - - -
Так первая и не используется кажись в плеере нигде.
- - - Добавлено - - -
Не понял почему +3 DOS ни с чем несовместима. +3e вполне может крутиться на IDE/MMC, рядом с FAT32 разделами, разве нет? https://worldofspectrum.org/zxplus3e/sharingdisks.html
Последний раз редактировалось Uzix; 07.06.2024 в 20:15.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Как писал в прошлый раз, начинать с disk_change - https://github.com/UzixLS/zx-midipla.../disk.asm#L379
По номеру диска disk_change доступается к элементу массива var_disks.all и подгружает оттуда ряд параметров в var_disk. Так же он вносит в var_disks.current_n номер текущего выбранного диска, а в var_disks.current_ptr - указатель на текущий диск из var_disks.all.
Тип диска определяется по var_disk.driver - если он = 0, то TR-DOS, иначе если старший бит 1 - то IDE, если 0 - то MMC.
Драйвер TR-DOS выбирает номер дисковода исходя из текущего номера диска var_disks.current_n (предполагается, что диски TR-DOS идут всегда первыми - от 0 до 3).
Драйвер IDE (MMC) выборает контроллер (DivIDE, NEMO, SMUC и т.д.) по оставшимся битам var_disk.driver. Притом для IDE самый младший бит - master/slave диск, для MMC - первая/вторая карта.
Нужно будет модифицировать эту схему. Например, для выбора драйвера использовать два старших бита: 00 - TR-DOS, 01 - IDE, 10 - MMC, 11 - +3DOS.
Так же при запуске/переконфигурации нужно, собственно, заполнить var_disks. Делает это disks_init - https://github.com/UzixLS/zx-midipla.../disk.asm#L229 - он же и должен детектировать +3DOS и занести количество найденных дисков в var_disks.count. Вот только в плеере сейчас подразумевается буква диска = 'A' + номер диска в списке, в +3DOS же, насколько знаю, буквы произвольно назначаются - нужно будет переделывать. Буквы дисков фигурируют только при выводе на экран в меню - этим занимается disks_menu_generator - https://github.com/UzixLS/zx-midipla.../disk.asm#L475 . Он дёргается из main_menu_generator нужное количество раз - по количеству дисков var_disks.count. Можно добавить поле с буквой диска в disk_t и доступаться к этому полю из disks_menu_generator.
Последний раз редактировалось Uzix; 07.06.2024 в 20:52.
Chwe(07.06.2024)
Да, технически оно не просто может, но именно так у меня и работает. Но это именно «рядом», просто, чтобы карту не «пертыкать» постоянно. Смущает то, с тех пор так и не нашёл никаких следов своих предшественников, потому как CF с «настоящими» CHS это не наш вариант, а чтобы кто-то ещё, кроме меня, натянул всю эту конструкцию на современную SD карту, такого я не слышал пока. Может, конечно, я просто этих очень скромных героев пока не нашёл
В общем, как детектировать +3 DOS, я придумать не могу -- кто знает, подскажите.
Да, именно поэтому я и хотел её использовать для экранов, которые на 7-мую не влезают. Но, пока что-то не выходит. Есть пара идей и, в принципе, так или иначе эта проблема решаема.
- - - Добавлено - - -
Спасибо огромное, посмотрю. Но, думаю, практически планирую сначала на длинных каталогах сосредоточится, у меня получается по 512 файлов на раздел записать.
Последний раз редактировалось Chwe; 07.06.2024 в 23:26.
А зачем намкузнецIDEDOS?Там же будут ложные срабатывания, не говоря уже о том, что +3 DOS может быть без IDEDOS (тот самый оригинальный +3 с 3" НГМД) или вообще без дисков (+2A, хотя, конечно, это бесполезно для наших нужд). А то и IDEDOS на 48-м попадётся, как, например, у меня на Sizif. Да и +3 DOS хорошо скрывает носитель. Думаю, именно +3 DOS, именно API. Наличие диска уже там можно проверить через API.
Но, мне кажется, детектирование +3 -- оно от лукавого. Просто сделать точку входа и её вызывать из зарузчика для +3 DOS. Тем более, там, похоже, без специального загрузчика не обойтись (см. ниже).
- - - Добавлено - - -
С первой страницей удалось разобраться, похоже, изменив конфигурацию кэша и RAM диска. Выходить обратно в BASIC нельзя, откатывает все изменения конфигурации. Наверное, для 80-х это нормально. В общем, теоретически, там можно изыскать место для RLE упакованных экранов и практически оно работает. Правда, за счёт уменьшения кэша. И придётся грузить их из кода. Как уменьшение кэша скажется на производительности, особенно на больших разделах +3e пока не совсем понятно.
Кстати, а если экраны упаковать поплотнее (я их сейчас жму zx0 и получается 3k вместо 9k), их можно вообще «внизу» оставить, там более 4k есть свободных. Но, это усложнит процесс сборки, появятся новые зависимости. Наверное, проще написать специальный загрузчик, чтобы по страницам памяти раскидывал, как для TR-DOS сделано. Там сразу и будет понятно, что +3 DOS и диск есть -- иначе как оно загрузилось-то вообще
Посмотрю теперь на большие каталоги +3e, а потом уже и на диски/устройства. Кто может помочь -- пишите, не стесняйтесьБуржуи, судя по всему, сами в своей +3 DOS не разбираются, по испански я не говорю, искать Гарри, наверное, пока ещё рано, никаких блокирующих проблем пока не видно.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)