User Tag List

Страница 6 из 26 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 251

Тема: ПК Специалист + AY-3-8910/12

  1. #51

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,375
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    384
    Поблагодарили
    346 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fifan Посмотреть сообщение
    Порт программатора используется не только по своему назначению. Забываете про подключенный считыватель SD карты. Не будет ли он конфликтовать с AY?
    не должен.
    из исходников Vinxru:

    Код:
    CLC_PORT        = 0F001h
    DATA_PORT       = 0F002h
    CTL_PORT        = 0F003h

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  2. #52

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,650
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У Сергея при реализации AY в FPGA встал вопрос, который тут пока не обсуждался. А как, собственно, раскидывать ABC по правому и левому каналам?
    С уважением, Станислав.

  3. #53

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,303
    Спасибо Благодарностей отдано 
    1,031
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Не знаю насколько это в текущем виде можно будет использовать где-то, кроме отдельно проигрывателя. Я же просто в лоб команды менял. Оптимизации - ноль. Например, если подряд идут команды для работы с IX, то в каждой идёт сохранение, а потом восстановление задействованных регистров. По идее можно сохранение сделать один раз перед пачкой этих команд, а после один раз всё восстановить. Да и то, не все регистры необходимо сохранять/восстанавливать - нужно смотреть по контексту. Но на первом этапе уже хорошо то, что оно работает! А дальше, конечно, нужно долго и упорно всё доводить до ума.
    Не все должно быть оптимизированно под 10 растровых строк. Такие плееры уже есть. Они полезны для демок и игр, но в них удобство использования не на первом месте. А кому-то может быть хотелось бы просто запустить плеер и послушать коллекцию pt2/pt3. Такого под Вектор по-моему нет даже на минималках, не говоря уже о том, чтобы красиво.
    Больше игр нет

  4. #54

    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,436
    Спасибо Благодарностей отдано 
    163
    Спасибо Благодарностей получено 
    190
    Поблагодарили
    121 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У меня есть Галаксия. Так вот в нёй есть AY и проигрыватель то же. Посмотрите информацию - может что полезное найдёте.


  5. #55

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    403
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serg6845 Посмотреть сообщение
    не должен.
    из исходников Vinxru:
    В SDOS тоже все ок:
    Код:
    SD_DATA_PORT EQU 0F000H ;0f700H
    ...
    SD_DATA_PORT_WW55 EQU 0F000h

  6. #56

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,650
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общем вот. Это очень грубая адаптация под i8080 проигрывателя PT2/PT3-модулей Сергея Бульбы. Требует серьёзнейшей оптимизации! Гарантировать, что там нет ошибок, я не могу, хотя несколько модулей, которые я тестировал, на мой немузыкальный слух играли как положено.

    В комплекте исходный код проигрывателя + файл с макросами + мелодия + готовый к запуску RKS. Макросы сильно упрощённые, подготовленные для конкретной программы. Использовать их для какого-либо другого переноса кода с Z80 на i8080 я не рекомендую.

    На Специалисте без прерываний на прилагаемой мелодии слышна неравномерность воспроизведения, которая отсутствует при использовании прерываний.

    Будет здорово, если кто-то поищет баги и займётся оптимизацией кода.
    Последний раз редактировалось CityAceE; 01.07.2025 в 20:50.
    С уважением, Станислав.

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

    ALS(02.07.2025), b2m(02.07.2025), CodeMaster(01.07.2025), fifan(02.07.2025), ivagor(01.07.2025), Oleg N. Cher(01.07.2025), svofski(01.07.2025)

  7. #57

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,650
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Развернул все макросы и, как и ожидал, увидел полный ужас. Кропотливо прошёл по всей программе, каждый раз проверяя свои изменения. Убеждался в каждом конкретном месте, какие регистры нужно сохранять, а какие можно игнорировать. В итоге универсальные конструкции типа таких:

    Код:
      ; LD E,(IX+CHP.TnAcc)
      ld  (t_084 + 1), a
      ld  a, h
      ld  (TMP1 + 1), a
      ld  a, l
      ld  (TMP1), a
      ld  hl, (rIX)
      ld  a, b
      ld  (TMP2 + 1), a
      ld  a, c
      ld  (TMP2), a
      ld  bc, CHP.TnAcc
      add  hl, bc
      ld  a, (TMP2 + 1)
      ld  b, a
      ld  a, (TMP2)
      ld  c, a
      ld  e, (hl)
      ld  a, (TMP1 + 1)
      ld  h, a
      ld  a, (TMP1)
      ld  l, a
    t_084  ld  a, 0
    
      ; LD D,(IX+CHP.TnAcc+1)
      ld  (t_085 + 1), a
      ld  a, h
      ld  (TMP1 + 1), a
      ld  a, l
      ld  (TMP1), a
      ld  hl, (rIX)
      ld  a, b
      ld  (TMP2 + 1), a
      ld  a, c
      ld  (TMP2), a
      ld  bc, CHP.TnAcc+1
      add  hl, bc
      ld  a, (TMP2 + 1)
      ld  b, a
      ld  a, (TMP2)
      ld  c, a
      ld  d, (hl)
      ld  a, (TMP1 + 1)
      ld  h, a
      ld  a, (TMP1)
      ld  l, a
    t_085  ld  a, 0
    Превратились в такое:
    Код:
      ; LD E,(IX+CHP.TnAcc)
      ; LD D,(IX+CHP.TnAcc+1)
      ld  (TMP1+1), hl
      ld  hl, (rIX)
      ld  de, CHP.TnAcc
      add  hl, de
      ld  e, (hl)
      inc  hl
      ld  d, (hl)
    TMP1:  ld  hl, 0
    Не везде можно пользоваться стеком, но, где можно, я использовал PUSH/POP.

    В аттаче текущая версия. Сделал всё, что мог. Думаю, что этим уже можно пользоваться. Но хотелось бы, чтобы всё-таки кто-нибудь сделал code review и потестировал на своих компах/эмуляторах с i8080.

    Также выложил на GitHub.
    Вложения Вложения
    • Тип файла: 7z PTxPlay.7z (10.0 Кб, Просмотров: 22)
    Последний раз редактировалось CityAceE; 04.07.2025 в 18:17.
    С уважением, Станислав.

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

    CodeMaster(04.07.2025), marinovsoft(06.07.2025), Pyk(10.07.2025)

  8. #58

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,650
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pyk внедрил в Emu80 TurboSound и кадровые прерывания в эмуляцию Специалиста. Пока что в тестовой версии. Вот как оно работает:



    Пока для теста использую проигрыватель, который я сам адаптировал. По совету ivagor воспроизвожу двумя проигрывателями, скомпилированными по разным адресам. Вроде бы играет, но есть уверенность, что так неправильно. Нужно вначале вывести данные на оба AY, а уже потом подготавливать данные для обеих AY для следующего кадра. Буду ждать правильной реализацию от ivagor

    Столкнулся с неожиданной проблемой. Не могу определить начало второй половины модуля, кроме как по поиску сигнатуры. Неужели в заголовке первого модуля нигде не указана его длина, чтобы автоматически вычислить смещение для второй половины? Даже у ИИ спросил. Но он то ли не знает, то ли ещё чего, но говорит, что именно по сигнатуре и нужно искать, и что якобы длина модуля нигде явно не указана. Странно это...
    С уважением, Станислав.

  9. #59

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В "двухчастных" модулях в любом случае по сигнатуре искать. Не знаю, как положено, а для себя я сформулировал два варианта:
    1. Ищем первую сигнатуру PT3! - после нее указано смещение второй части. Как вариант - ищем сигнатуру 02TS и потом по отрицательному смещению находим смещение второй части.
    2. Вторую часть можно искать по совпадению начальных сигнатур модулей.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    CityAceE(13.07.2025)

  10. #60

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,650
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    2. Вторую часть можно искать по совпадению начальных сигнатур модулей.
    Собственно, именно этот вариант я у себя и реализовал в итоге.

    Код:
    string_length    equ 10    ; По какому количеству байт искать
    
    ; Ищем второе вхождение начальной сигнатуры
    ; На выходе в HL адрес второй части
    find_second_half:
        ld    bс, 0xff00
        ld    de, melody
        ld    hl, melody + string_length
    find_second_half_01:    
        ld    a, (de)
        cp    (hl)
        jp    z, find_second_half_02
        ld    c, 0
        ld    de, melody
        jp    find_second_half_03
    find_second_half_02:    
        dec    c
        inc    de
    find_second_half_03:
        inc    hl
        ld    a, c
        cp    -string_length
        jp    nz, find_second_half_01
        add    hl, bc
        ret
    Проверки не длину нет, то есть считается, что повтор обязательно встретится. Вот так я придумал, но, как обычно, я делаю всё "в лоб". А как можно улучшить?
    С уважением, Станислав.

Страница 6 из 26 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. AY-3-8910 in FPGA
    от VELESOFT в разделе Звук
    Ответов: 18
    Последнее: 25.12.2015, 22:13
  2. AY-3-8910 к РК
    от Kakos_nonos в разделе Радио-86РК
    Ответов: 4
    Последнее: 24.05.2013, 12:10
  3. AY-3-8910
    от Eugeny в разделе Звук
    Ответов: 14
    Последнее: 05.09.2011, 17:11
  4. Продам AY-3-8910
    от crolicasm в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 17.03.2009, 15:25
  5. О портах AY-3-8910...
    от ILoveSpeccy в разделе Звук
    Ответов: 2
    Последнее: 02.07.2007, 15:02

Ваши права

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