; Gestion du mode d'interruption ; vectorisé sur 6128 plus et 464 plus ; (mise en évidence du bug du vecteur d'interruption) ; ; Par OffseT of Futurs' ; pour Quasar CPC numéro 10 ; ; Attention : pensez à délocker l'ASIC avant ; de lancer ce prog car sinon c'est le plantage assuré !!! ; Org &8000 ; On commence ici ! Limit &9fff ; On s'arrêtera là ! Nolist Vector Equ &a0 ; Octet de poids fort ; de l'adresse des ; vecteurs d'interruption Adr Equ vector*&100 IVR Equ 0 ; Valeur du registre IVR DMA0 Equ adr+ivr+%100 ; Déclaration des adresses DMA1 Equ adr+ivr+%010 ; des vecteurs d'interruption DMA2 Equ adr+ivr+%000 ; des DMA son 0, 1 et 2 et RAST Equ adr+ivr+%110 ; de l'interruption raster. di ; On interdit les ; interruptions pour ; ne pas avoir de surprise ! ld bc,&7fb8 ; On connecte la page out (c),c ; I/O ASIC en &4000-&7FFF ; (comme d'habitude) ld a,vector ; On charge l'octet de ; poids fort du vecteur ld i,a ; d'interruption dans I. ld a,ivr ; Chargement du registre IVR ld (&6805),a ; sur la page I/O ASIC ld bc,&7fa0 ; Déconnexion de la page out (c),c ; I/O ASIC ld hl,son0 ; Initialisation des vecteurs ld (dma0),hl ; d'interruption aux adresses ld hl,son1 ; calulées lors de la ld (dma1),hl ; déclaration des constantes. ld hl,son2 ; (DMA0)=Son0 ld (dma2),hl ; (DMA1)=Son1 ld hl,raster ; (DMA2)=Son2 ld (rast),hl ; (RAST)=Raster im 2 ; Passage en mode vectorisé ei ; On revient au système comme ret ; si de rien n'était... ; ; Vecteur d'interruption ; Son0 push af ; On poke 0 en &0000 xor a ; pour dire qu'on a été ld (0),a ; appelé puis on lance pop af ; le vecteur d'interruption jp &b941 ; du système Son1 push af ; De même mais on poke 1 ld a,1 ; en &0000 ld (0),a ; ... pop af ; ... jp &b941 ; ... Son1 push af ; Idem avec 2 en &0000 ld a,2 ; ... ld (0),a ; ... pop af ; ... jp &b941 ; ... Raster push af ; Idem avec 255 en &0000 ld a,255 ; ... ld (0),a ; ... pop af ; ... jp &b941 ; ...