Скрытый текст
ZX Spectrum +2 +divIDE + BDI
Profi 1024k plus
Scorpion ZS-256 Turbo+
ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
AVR ZX Spectrum V2.0
Орион 128[свернуть]
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Никто не мешает дальше развивать. Но вопрос сейчас стоит не в развитии, а о том как сварганить прерывание. Выход прерывания есть и на этой карте и она может генерить как само прерывание, так и вектор отличный от FF. Как мне этот вектор описать в программе. Иными словами, тупо нужен пример кода формирователя такого прерывания.
Ты на пальцах наглядно объясни.
Вот есть допустим два прерывания, одно выдает FFh на шину (от видеоконтроллера), а пользовательское устанавливает на шине данных F0h, а в регистре I при этом будет 60h. Как будет выглядеть процедура установки обработчика.
Меня вот именно это интересует. Кто может показать наглядно?
Можно даже не заводить отдельный вектор - у OPL есть два таймера с битами состояния, а значит их можно прочитать в обработчике и проверить: OPL ли это прерывания прислал? Они на MSX так ведь и проверяют:
Но вот у VSYNC прерывания у Speccy не такого бита, а главное он широкий (по крайней мере на некоторых клонах), при том, что z80 принимает прерывание по срезу сигнала, это кадровый гасящий возможно будет гадить и прерывание от OPL будет пропущено. Если был бы контроллер прерываний или хотя бы они по уровню обрабатывались, а не импульсом... Беда в общем, остаётся надеяться, что такое редко будет случаться и на следующем VSYNС подхватим потерянное прерывание или в паузе придёт очередное от OPL (оопс, а подтверждение он получил?) И надеяться, что никто это не услышит.Код:opl4_int_han: in a,(0C4H) ; Put this shit in the RS232 area rla ; this is to prevent 50 or 60 CALLFs ret nc ; to the replayer rst 030h
Другой вариант - задействовать под прерывание другой вход процессора, NMI...
P.S. Сколько себя помню в IM2 режиме никто не надеялся, что с шины придёт именно 0xFF, всегда лепили таблички в 257 одинаковых байт.
---------- Post added at 21:06 ---------- Previous post was at 20:29 ----------
Я чего-то не понял: криокамера или таки музыка от Sage Dreamcast вещь доступная?
Микросхема SEGA 315-6232 (QFP -100) - 80,00 руб.
Микросхема Stereo DAC PCM1725U - 50,00 руб.
80 рублей, Карл...
Ну да странный какой-то G2 интерфейс 16-ти битный, загрузка ARM7DI через него, но это же кошерный Ямаховский чипец "Yamaha Super Intelligent Sound Processor" AICA, умеющий MIDI XG, поддерживающий до 8MB SDRAM, имеющий встроенный эффект процессор... В MAME для аркадных автоматов давным-давно научились эмулировать.
Последний раз редактировалось troosh; 19.06.2015 в 21:10.
Ты не до конца написал тот обработчик
Код:opl4_int_han: in a,(0C4H) ; Put this shit in the RS232 area rla ; this is to prevent 50 or 60 CALLFs ret nc ; to the replayer rst 030h Page_nmb: db 0 dw play_int retКод:play_int: di ld a,4 out (0C4H),a opl4_wait ; wait if Turbo-R ld a,128+1 out (0C5H),a ; reset opl4 IRQ .....
Последний раз редактировалось Mick; 19.06.2015 в 22:12.
хреновасто он там эмулируется , лучше вот этим http://www.foobar2000.org/components/view/foo_input_ht
его слегка погнули копипастой не верного кода из МАМЕ, но это лучшее что пока есть
музычку можно взять там - http://dsf.joshw.info/ (дримкаст/наоми) или там http://ssf.joshw.info/ (сатурн/ств)
ps: жирные архивы не имеет смысла качать, там потоковое аудио в каком-нибудь .adx, а в мелких - более интересные секвенсорные музоны.
из хороших примеров - http://dsf.joshw.info/s/Skies%20of%2...orks)(Sega).7z
Последний раз редактировалось MetalliC; 21.06.2015 в 22:38.
Чуть посложнее, чем описано по треду далее.
Во первых, каждому источнику прерывания, включая кадровое, соответствовал отдельный бит в векторе прерывания. Это нужно, чтобы можно было обработать прерывание сразу из нескольких источников. Т.е. концу цикла ДМА соответствовал бит 7, первому таймеру бит 6, второму - бит 5, кадровому - инверсный бит 4. Соответственно, в таблице прерываний расставлялось 16 переходов на обработчики. На вектор #6F ставился обработчик конца ДМА, на вектор #BF - первый таймер, на #2F - конец ДМА и первый таймер, и т.д. Бит кадрового прерывания был инверсным, соответственно кадровое прерывание - вектор #FF, кадровое и конец ДМА - #7F и т.д.
Во вторых, запрос на все прерывания, кроме кадрового, не снимался до подтверждения, можно было в программе по ходу пользоваться DI и EI, это не вело к пропуску прерывания.
Вектор выставлялся на шину по совместному сигналу /IORQ и /M1, этим же сигналом сбрасывались триггеры запроса прерывания.
Вот как-то так было, если склероз не подводит.
https://www.youtube.com/watch?v=ZHuo4O9NJoI
Интересно, а эта музыка записывалась с настоящего SID? Автор пишет про реверберацию, панирование и задержки как вроде бы сторонние эффекты. Что скажете, специалисты?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)