Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 30 Nov 2025, 12:23

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Mode IM2 Cpc+

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 1 message ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
AsT
 Sujet du message : Mode IM2 Cpc+
Message Publié : 05 Nov 2013, 00:04 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 29 Août 2007, 08:04
Message(s) : 751
Localisation : Impact Hq
Bonjour,


Je me suis amusé a faire une routine utilisant les interruptions en mode im2 sur Cpc+.
Ce que je voudrait faire, une routine sous interruption affichant un raster (un peu comme une cooperlist sur amiga)
Mon problème, ça plante, et je n'ai pas vraiment la main sur le basic... arfff...


voici le code incriminé, si vous avez des idées, je suis preneur.


Code :

   org #a000


ivr   equ 0   
vector   equ #90         ; Si Ivr=0 alors #9000(Dma0), #9002(Dma1)   
adr   equ vector*256      ; #9004(Dma2) et #9006 (Raster Interrupt)
;
   di
   ld hl,(#39)
   ld (restore+1),hl
   ld (rstart+1),hl
;
   call delock
;
   ld bc,#7fb8
   out (c),c


   LD A,vector              ; Poids fort
   LD I,A
   LD A,ivr         ; a=Poids faible
   LD (#6805),a          ; on charge le registre IVR


   ld bc,#7fa0
   out (c),c


   


   LD HL,INT0
   LD (adr+ivr+%000),hl    ; DMA2
   LD HL,INT1
   LD (adr+ivr+%010),hl    ; DMA1
   LD HL,INT2
   LD (#9000+ivr+%100),hl  ; DMA 0
   LD HL,INT3
   LD (#9000+ivr+%110),hl  ; Raster Interrupt
   IM 2
   
   ei
   ret
INT2
   push hl:push bc
   ld bc,#7fb8:out (c),c
   ld hl,#f00
   ld (#6420),hl
   ld bc,#7fa0:out (c),c
   pop bc:pop hl
   jr rstart


INT1
   push hl:push bc
   ld bc,#7fb8:out (c),c
   ld hl,#800
   ld (#6420),hl
   ld bc,#7fa0:out (c),c
   pop bc:pop hl
   jr rstart
INT0
   push hl:push bc
   ld bc,#7fb8:out (c),c
   ld hl,#400
   ld (#6420),hl
   ld bc,#7fa0:out (c),c
   pop bc:pop hl
   
   
rstart   jp #dead


INT3   
   ei
   push af:push bc:push de:push hl
   ld bc,#7fb8:out (c),c
   ld hl,cooper
   ld de,#6400
   ld b,20
   
;
bc1
   ld a,(hl)
   ld (de),a
   inc e:inc hl
   ld a,(hl)
   ld (de),a
   dec e:inc hl
   
;
   
;
   ld a,4
bc2   defs 60,0
   dec a:jr nz,bc2


   defs 64-14-5,0
   
   djnz bc1


;
   ld bc,#7fa0:out (c),c


   pop hl:pop de:pop bc:pop af
   ei   
   
restore   jp #caca
    
   ret
cooper
   defw #f00,#e01,#d02,#c03,#b04
   defw #901,#802,#703,#604,#505
   defw #09f,#08f,#07f,#06f,#05f
   defw #04f,#03f,#02f,#01f,#00f


delock
   DI   
   LD   e,17
   LD   hl,tbasic
   LD   bc,#bc00
l_asic   LD   a,(hl)
   OUT   (c),a
   INC   hl
   DEC   e
   JR   nz,l_asic
   EI   
   RET   
tbasic
   DB   255,0,255,119,179
   DB   81,168,212,98,57,156
   DB   70,43,21,138,205,238







Merci d'éviter les réponses à la con (-:

_________________
AsT / iMP4CT

Retrouvez nous sur le forum Amstrad Plus
"Call &bb06"


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 1 message ] 

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 42 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.