; Programme d'exemple d'utilisation
; des canaux DMA son du CPC+
;
; Zik pour Quasar CPC 20 (2002)
;
Org &8000 ; où vous voulez en dehors de &4000-&7fff
Limit &80ff
Nolist ; pour Maxam
DMASAR0 equ &6c00 ; adresse AY-liste
DMASAR1 equ &6c04
DMASAR2 equ &6c08
DMAPPR0 equ &6c02 ; adresse unité de pause
DMAPPR1 equ &6c06
DMAPPR2 equ &6c0a
DCSR equ &6c0f ; ITraster / ITDMA2 / ITDMA1 / ITDMA0 /
; x / DMA2 / DMA1 / DMA0
call delock ; déverrouille l'ASIC
di
ld bc,&7fb8 ; Connexion page Asic (&4000-&7fff)
out (c),c
call exemple1
call &bb18 ; attend une touche
call exemple2
ld bc,&7fa0 ; Deconnexion page Asic
out (c),c
ei
ret
Exemple1
xor a
ld (DMAPPR2),a
ld hl,Ay_ListeA
ld (DMASAR2),hl
ld a,%100 ; lance DMA2
ld (DCSR),a
ret
Exemple2
ld a,17
ld (DMAPPR2),a
ld hl,Ay_ListeB
ld (DMASAR2),hl
ld a,%100 ; lance DMA2
ld (DCSR),a
ret
;# Déverrouille l'ASIC
;#####################
Delock di
ld a,17
ld hl,asic
Loop ld b,&bd
outi
dec a
jr nz,loop
ei
ret
Asic db 255,0,255,119,179,81,168,212,98,57,156,70,43,21,138,205,238
;# Définition des AY-Listes
;##########################
Org &8100 ; où vous voulez en RAM centrale
; doit etre une adresse paire
Limit &81ff ; ne t'éloigne pas trop mon petit...
; 1er exemple ; génération de formes d'onde
Ay_ListeA dw &073f,&0000,&0100
dw &2040,&080f,&1012,&0800,&100f,&4001
dw &2040,&0808,&1011,&0800,&1010,&4001
dw &2080,&080f,&1011,&0800,&100e,&4001
dw &2080,&0808,&1010,&0800,&100f,&4001
dw &2060,&080f,&101b,&0800,&101b,&4001
dw &4020
; 2ème exemple ; sons classiques
Ay_ListeB dw &073f
dw &080f,&090f
dw &0000+159,&0100,&0200+213,&0300
dw &073c,&1040,&073f,&1050
dw &2002
dw &0000+142,&0100,&0200+358-256,&0301
dw &073c,&1040,&073f,&1050
dw &4001
dw &2002
dw &0000+127,&0100,&0200+319-256,&0301
dw &073c,&1040,&073f,&1050
dw &4001
dw &2003
dw &0000+119,&0100,&0200+190,&0300
dw &073c,&1040,&073f,&1050
dw &4001
dw &4020
NOTICE TEXTE n° 2 (277 o)
;
; Connexion de la RAM de la Multiface en &2000
; (la Multiface Two doit etre visible !)
;
Org &8000
Nolist
di
ld bc,&7f8a
out (c),c
ld bc,&fee8
out (c),c
; Placez ici votre code de configuration de la MF2
ld bc,&feea
out (c),c
ei
ret