User Tag List

Страница 14 из 16 ПерваяПервая ... 10111213141516 ПоследняяПоследняя
Показано с 131 по 140 из 151

Тема: Ретро-ЯП Millfork для Atari, Apple II, ZX Spectrum, MSX, CP/M, NES, Game Boy и MS-DOS

  1. #131

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Поковырял тут немного XDOS. Согласно документации, после загрузки программы, с адреса XLINE ($0880) находится вся строка (имя файла + аргументы) которые набрали.
    Сделал небольшую процедурку, которая копирует эту шнягу в буфер и теперь можно загружать разные файлы, указав их как аргумент:





    Единственное что осталось это разобраться с размерами загружаемого файла. Чисто гипотетически конечно можно не грузится этим и грузить частями в небольшой буфер, но так не интересно
    Вложения Вложения
    • Тип файла: zip DOS2.zip (39.1 Кб, Просмотров: 107)

  2. #132

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,451
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    119 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это только ATASCII? poke 82,0 решат заморочку с краями.

  3. #133

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,291
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    Единственное что осталось это разобраться с размерами загружаемого файла.
    возможно стоит посмотреть в
    Код:
    XFILE = $87D filename buffer
    ещё про команду LOA пишут что
    After executing the command, the Number of bytes actually loaded in $358/9
    (and can be determined with the DUP command = 358)
    Последний раз редактировалось goodboy; 07.11.2024 в 15:20.

  4. #134

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    Это только ATASCII?
    Ну для примера да, а так не важно что там, может и обычный текст быть.

    Цитата Сообщение от Shiny Посмотреть сообщение
    poke 82,0 решат заморочку с краями.
    Ну как вариант

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

    Цитата Сообщение от goodboy Посмотреть сообщение
    возможно стоит посмотреть в
    Код:
    XFILE = $87D filename buffer
    Честно там не совсем понятно что за данные.

    Цитата Сообщение от goodboy Посмотреть сообщение
    ещё про команду LOA пишут что
    After executing the command, the Number of bytes actually loaded in $358/9
    (and can be determined with the DUP command = 358)
    Ну надо подумать, вообще хотелось бы предварительно знать, сколько выделять памяти. Но это только в мечтах. Размер Array должен быть статический, тупо выделил 256б вот и радуйся)
    Чисто гипотетически можно выделить 128б (по размеру сектора) и сделать счётчик загрузки

  5. #135

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Короче, пошаманив немного, нашел идеальный вариант. Методом научного тыка (из дампа памяти) нашел интересный адрес $0028/29 а потом в описании памяти атари увидел, что здесь хранится количество переданных/принятых байт через SIO. Так что вопрос с точностью быстро решился.

    Вариант с адресами $358/9 не проканал, поскольку это используется при команде 40 (если я правильно понял) загрузчика бинарных файлов (исполняемых). И там ничего нет при загрузке через команду 7.

    Переименовал файл в XV.COM, так как задолбало набирать длинное название с расширением, а XEX XDOS не понимает

    Ну и поправил некоторые ляпы с $9b (перенос строки) и на время отображения отключаю смещение (poke 82,0). Буфер сделал 1024 байта, если сделать меньше (например 255), то видно как частями грузится картинка

    Так же встречается ESC код $1b (в картинке ATARI600) поправил, теперь всё збс!

    Есть косяк с US2.ATA не могу понять почему на середине картинки позицию швыряет в начало экрана o_O

    Ещё почему-то не зависимо от того нашелся ли файли или нет(заблокирован) из $0343 возвращается код 01 - ошибок нет. Надо копать.

    Ну а так в целом минималистичный вьювер ATASCII готов





    Вложения Вложения
    • Тип файла: zip DOS3.zip (22.5 Кб, Просмотров: 128)

    Эти 3 пользователя(ей) поблагодарили breeze за это полезное сообщение:

    andrews(08.11.2024), goodboy(10.11.2024), Oleg N. Cher(08.11.2024)

  6. #136

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Решил тут ещё немного поколупаться с DOS, в результате чего родился плеер треков в формате MPT (Atari Music ProTracker) да да, всем так нравилось это слово, что протрекер есть везде



    Сначала загружается сама программа, затем бинарь MPT-плеера (в будущем можно сделать детект и подгружать разные плееры).
    В качестве аргумента указываем имя музыки.

    На бордюре такты, по любой клавише выход.

    Из интересного, в Millfork есть пример для этого плеера, но он немного некорректен. Во первых исходный XEX занимает аж 38кб, поскольку сама программа и плеер с музыкой «размазаны» по памяти, выгружается такой огромный брикет. А во вторых, пропускаются 6 байт при импорте файлов:

    Код:
    const array player @ ADDRPLA = file("data/mpt_player.obj", 6)
    Почему их было не обрезать сразу при создании мне не ясно. В принципе я нашел плеер MPT в исходниках, так что можно подумать об оптимизации.
    Кроме того походу пьесы автор не разобрался как управлять плеером, и вместо того что бы подать команду 2 (остановить) он глушит цифровые каналы (да-да плеер умеет в дигитал).

    В сырках я перевёл команды плеера:

    Код:
    // commands, A:
    // 0 - инициализация. в регистрах Y-младший и X-старший байт адреса музыкальных данных.
    // 1 - воспроизвести инструмент, номер которого находится в битах 4-0 рег.X,
    //     в битах 7-6 рег.X - номер канала, на котором должен быть сыгран этот инструмент,
    //     а в рег.Y-номер ноты инструмента, с C-1 - $00, c#1 - $01.
    // 2 - остановить воспроизведение музыки, без каких-либо параметров.
    // 3 - воспроизвести паттрен, номер которого находится в битах 5-0 рег.X,
    //     в битах 7-6 рег.X - номер канала, а рег.Y - транспозиция канала.
    // 4 - начать воспроизведение музыки. В рег.X - номер позиции начала, а рег.Y - биты 0-3 какой из
    //     каналов должен быть выключен (0 - 3й, 1 - 2й, 2 - 1й, 3 - 0й канал = 1 выключен)
    // 5 - воспрозвести цифровой семпл, в регистрах Y-младший и X-старший байт адреса таблици, в которой
    //     находится список адресов расположения семплов.
    // 6 - воспроизведение цифровой музыки, в рег.X bit 0 = 1 - 15kHz, 0 - 8kHz
    // 7 - воссоздаёт(?) цифровой семпл, номер которого в рег.Y(0-F), в рег.X bit0 - 15kHz, bit7-6 номер канала
    Вложения Вложения
    • Тип файла: zip DOS4.zip (43.8 Кб, Просмотров: 61)

  7. #136
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #137

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,451
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    119 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    во вторых, пропускаются 6 байт при импорте файлов:

    Код:
    const array player @ ADDRPLA = file("data/mpt_player.obj", 6)
    Почему их было не обрезать сразу при создании мне не ясно

    Вангую, что стандартный заголовок - слово $FFFF, начальный адрес, конечный адрес.

  9. #138

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    Вангую, что стандартный заголовок - слово $FFFF, начальный адрес, конечный адрес.
    Ну где-то так Это DOS-заголовок файлов?

  10. #139

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Итак очередная версия моего плеера под XDOS.
    На этот раз она по расширению файла понимает какой тип плеера нужен, и подгружает его.
    Пока этот два варианта CMC - Chaos Music Composer и MPT - Atari Music ProTracker.
    Выглядит это так:



    К сожалению с MPT до конца разобраться не получилось и сменить адрес загрузки с наскока не вышло.
    Однако это оказалось ещё не все проблемы, не знаю как с форматом MPT, но вот в CMC расположение «паттернов»(?)
    в памяти привязывается при сохранении файла в редакторе.

    Например, если у файла указано, что он загружается в область $8000, а потом его попытаться проиграть с $a000, то
    мы в лучшем случае получим попёрдываение или завывание, а в худшем плеер почему-то тупо повиснет.

    В результате чего пришлось питать ретранслятор адресов, который искал нужный и корректировал его под адрес
    загрузки.



    Честно говоря я немного в шоке от того, что это приходится делать в обратную сторону. Видимо спектрум разбаловал вменяемой логикой
    Логично же, что первый раз плеер вызывает инициализацию и может табличку адресов подкорректировать. Но нет, всё жОска прибито.

    Подозреваю что в MPT такая же фигня.
    Вложения Вложения
    • Тип файла: zip DOS5.zip (82.6 Кб, Просмотров: 91)

  11. #140

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,451
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    119 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С привязкой по адресам у плееров вообще беда. К счастью, утилиты были у Mad Assembler.Я так страдал с .RMT, а потом плюнул, и стал ориентироваться на занятые адреса $4000-сколько там.

Страница 14 из 16 ПерваяПервая ... 10111213141516 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 11
    Последнее: 08.12.2023, 17:18
  2. Bad Apple для MSX/MSX2
    от Pyhesty в разделе MSX
    Ответов: 4
    Последнее: 31.05.2021, 21:45
  3. Перенос игр с Game Boy на ZX Spectrum
    от CityAceE в разделе Программирование
    Ответов: 104
    Последнее: 14.02.2019, 10:56
  4. Game Boy Advance
    от megabyte в разделе Nintendo
    Ответов: 8
    Последнее: 22.05.2006, 14:48
  5. Game Boy Advance в Питере.
    от Surfin_Bird в разделе Nintendo
    Ответов: 10
    Последнее: 21.08.2005, 09:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •