Важная информация

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: Общая тема для моих вопросов (ассемблер и zx spectrum)

  1. #11
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    moronizzz, размещай это дело в памяти
    ld a,(foo)
    inc a
    ld (foo),a
    ld hl,(foow)
    ret

    foo db 1
    foow dw #8001

  2. #12
    Junior Аватар для moronizzz
    Регистрация
    02.05.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    15
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я нашёл статью, где немного описывается как звуки из бипера извлекать: http://zxpress.ru/article.php?id=5441&lng=eng

    В связи с этим появились новые вопросы:

    1) Есть ли где-то шпаргалка по соответствию задержек (частоты смены 4 бита) и нот?

    2) Если предложенную функцию запускать в цикле, получается, что цвет бордюра постоянно меняется (из-за того, что используется XOR, чтобы менять значение 4 бита), есть ли общеизветный способ это обойти? Пока надумал только тестировать четвёртый бит при помощи BIT и устанавливать/сбрасывать в зависимости от предыдущего результата, но по-моему это очень медленно получится.

    На всякий случай код из статьи:

    Скрытый текст


    10 DI; ban interrupt
    20 LD BC, 2560; BC = length
    30 LD A, 7; A = Border color
    40 BEGIN XOR 16; inverting bits D4
    50 OUT (254), A; output to port A 254
    60 LD D, 100; D = delay (frequency)
    70 PAUSE DEC D; D = D-1
    80 JR NZ, PAUSE; if D <> 0 then loop
    90 DEC BC; BC = BC-1
    100 LD D, A; preservation A
    110 LD A, B; BC =
    120 OR C; 0?
    130 LD A, D; A recovery
    140 JR NZ, BEGIN; if BC <> 0 then loop
    150 EI; permission to interrupt
    160 RET; return to BASIC
    [свернуть]


    3) Есть ли где-то пример того, как музыку на бипере приделывают к демо/интро? Выглядит так, как будто должна быть написана процедура (subroutine), издающая звуки, и к этой процедуре должны производиться регулярные обращения при выполнении программы - это так?
    Последний раз редактировалось moronizzz; 23.08.2016 в 03:17.

  3. #13
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    moronizzz,
    2) По хитрому не знаю. Нужно по честному: знать какой у тебя сейчас цвет бордюра, и при записи в порт FE этот цвет подтверждать в младших трёх битах.
    Вот посмотри на код из статьи, строка 30. Программист знал, что цвет белый и только белый. И он смело пишет константу 7.

  4. #14
    Junior Аватар для moronizzz
    Регистрация
    02.05.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    15
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    moronizzz,
    2) По хитрому не знаю. Нужно по честному: знать какой у тебя сейчас цвет бордюра, и при записи в порт FE этот цвет подтверждать в младших трёх битах.
    Вот посмотри на код из статьи, строка 30. Программист знал, что цвет белый и только белый. И он смело пишет константу 7.
    Тут "подтверждение" работает только один раз, потому что если в цикле заново указывать цвет, то будет сбрасываться и четвёртый бит, у меня сейчас примерно так всё это выглядит:

    Скрытый текст


    DI ; ban interrupt

    LD A, %00000100 ; A = Border color

    main_loop:
    LD A, D ; A recovery
    LD BC, 2000 ; BC = length
    BEGIN:
    ;XOR %00010000 ; inverting bits D4

    ; чтобы сохранить цвет бордюра
    BIT 4, A
    LD A, %00000100

    JP NZ, skip_set
    SET 4, A
    skip_set
    JP Z, skip_res
    RES 4, A
    skip_res

    OUT (254), A ; output to port A 254
    LD E, A
    LD A, (delay)
    LD D, A ; D = delay (frequency)
    LD A, E

    PAUSE:
    DEC D ; D = D-1
    JR NZ, PAUSE ; if D <> 0 then loop

    DEC BC ; BC = BC-1
    LD D, A ; preservation A

    LD A, B ; BC = 0?
    OR C ;

    JR NZ, BEGIN ; if BC <> 0 then loop

    LD A, (delay)
    SUB 5
    CP 0
    JP Z, finish
    LD (delay), A
    JR main_loop
    RET
    finish:
    nop

    EI ; permission to interrupt
    RET ; return to BASIC

    delay: DEFB 255
    [свернуть]

  5. #15
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    BIT 4, A
    LD A, %00000100
    JP NZ, skip_set
    SET 4, A
    skip_set
    JP Z, skip_res
    RES 4, A
    skip_res
    Если ты в E хранишь текущее значение, выведенное в #fe, то лучше его и использовать, а не сохранять A куда попало:
    Код:
    LD A, E
    XOR %00010000 ; изменить бит 4 на противоположный
    LD E,A
    OUT (254), A
    Другой вопрос - если менять кол-во тактов между выводами в #FE, меняется и частота звука бипера
    Последний раз редактировалось SAM style; 23.08.2016 в 18:11.
    Все любят гипножабу

  6. #16
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от moronizzz Посмотреть сообщение
    LD A, %00000100 ; A = Border color
    main_loop:
    LD A, D ; A recovery
    Записал в А цвет бордюра, и тут-же его стёр. А что в D - неизвестно.

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

  8. #17
    Junior Аватар для moronizzz
    Регистрация
    02.05.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    15
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вижу, что люди добавляют в образ с программой картинки и музыку бинарниками - где почитать как эти бинарники использовать из кода? Про графику, опять же, более-менее понятно, достаточно знать в какую область памяти она загружена и копировать на экран, а в случае с музыкой как будет?

  9. #18
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Страница 2 из 2 ПерваяПервая 12

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

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

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

Похожие темы

  1. Сегодня ДР у двух моих (и не только) друзей!
    от CodeMaster в разделе Поздравления
    Ответов: 9
    Последнее: 23.01.2020, 11:45
  2. Исходники и коды моих наработок на Z80 под Спектрум
    от Spectramine в разделе Программирование
    Ответов: 8
    Последнее: 18.02.2017, 21:00
  3. Исходники моих старых программ.
    от SAM style в разделе Программирование
    Ответов: 23
    Последнее: 21.10.2015, 22:14
  4. Одна из моих самых любимых мелодий
    от Cooper в разделе Музыка
    Ответов: 11
    Последнее: 28.08.2008, 13:00

Ваши права

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