А... Это я видел. Но это не совсем тоЯ имел ввиду полноценный интерфейс типа как в эмуляторе X128.
А... Это я видел. Но это не совсем тоЯ имел ввиду полноценный интерфейс типа как в эмуляторе X128.
С уважением, Станислав.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В X128? Нет там никакого интерфейса.
Подобные вещи есть тока в старых версиях UnewalSpeccy (0.19b ... 0.21b3) и Z80Stealth.
Вот кусок документации UnrealSpeccy:А вот кусок документации Z80StealthКод:unreal programming interface unreal API allows you to use emulator more efficiently. here is a brief description of documented unreal functions. all functions may be called through executing Z80 invalid opcode EDFF, registers must contain the following values: BC=6E75, DE=6572, HL=6C61, A=function_code, IX=param for example: UAPI: ld bc, word ptr [key+0] ld de, word ptr [key+2] ld hl, word ptr [key+4] db 0EDh, 0FFh ret key: db 'unreal' API functions: 0. exit emulator,if you don't want your program to be emulated on unreal speccy ld a,'q' ld ix, offset quit_message jp UAPI ; don't return ; not more then 64 chars, and can't cross 16K page boundary quit_message: db 'allowed to run only on real hardware',0 1. get emulator version ld a,'?' call UAPI ; returns: ; CY=0 [success flag] ; H - major version number ; L - minor version number ; A - bits 0..6 - revision number. bit 7 = 0 - beta version ; unreal 0.19b will return HL=0x0013, A=0x00 ; unreal 0.19b2 will return HL=0x0013, A=0x02 ; unreal 1.00 will return HL=0x0100, A=0x80 (hopefully:) 2. set video mode ld a,'v' ld ix,mode call UAPI ; flag CY=1 - mode not found, CY=0 - ok mode equ 0 ; normal mode equ 'c'+100h*'2' ; chunky 2x2 mode equ 'c'+100h*'4' ; chunky 4x4 mode equ 'C'+100h*'2' ; chunky 2x2, filtered mode equ 'C'+100h*'4' ; chunky 4x4, filtered mode equ 'n'+100h*'f' ; noflic (pseudo-gigascreen) mode equ 'f'+100h*'c' ; flash-color mode equ 'x'+100h*'2' ; 512x192 mode equ 'b'+100h*'i' ; bilinear mode equ 'a'+100h*'c' ; AlCo 384x304 mode equ 't'+100h*'v' ; TV emulation mode equ 's'+100h*'c' ; scaling (**) ; note: ** - may be removed in next versions 3. set soundchip type ld xh, chip ; 'a' - AY-3-8910, 'y' - YM2149F, 'd' - digital, '0' - none ld xl, stereo ; 'b' - ABC, 'c' - ACB, '0' - mono, '?' - custom ld a,'m' call UAPI ; flag CY=1 - bad parameter, CY=0 - ok 4. quick save 48/128K snapshot ld a,'s' call UAPI ; CY=1 - error, CY=0 - ok 5. quick load 48/128K snapshot ld a,'l' call UAPI ; CY=1 - error, probably 'quick save' not called ; CY=0 - impossible (snapshot is running, not this code)Код:╔══════════════════════════════════════════════════════════╗ ║ Как вытащить из программы на Спектруме понравившуюся ║ ║ мелодию для музыкального сопроцессора при помощи трэпов? ║ ╚══════════════════════════════════════════════════════════╝ От вас потребуется знание ассемблера Z80 и умение взламывать программы для ZX-Spectrum. Прежде всего, в конфигурационном файле впишите PSGTRAP=YES. Типичная программа, проигрывающая музыку на музыкальном сопроцессоре, содержит нехитрый "плеер" - кодовый блок, на который возлагается всё программирование AY-3-8910 или YM2149F. Сразу же после инициализации плеера "подсуньте" Z80 код ED F9. Такое "подсовывание" можно произвести, наример, в отладчике эмулятора. Выполнение в Z80Stealth этого кода при PSGTRAP=YES приведёт к тому, что эмулятор создаст файл dump.psg и будет копировать в него все данные, поступающие в регистры AY/YM. Формат файла (PSG или EPSG) вы можете выбрать в конфигурационном файле. Обычно в плеере есть код, обеспечивающий "зацикливание" - переход к началу (или к произвольному месту) мелодии при достижении конца. Впишите вместо этого кода ED FA - по этой псевдоинструкции Z80Stealth закроет файл и завершит работу, и вы вернётесь в ДОС. Файл dump.psg - в вашем распоряжении. Кстати, для быстрой выгрузки PSG-файла можно воспользоваться опцией MAXSPEED=YES.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)