| CPC Rulez https://cpcrulez.fr/forum/ |
|
| Mode IM2 Cpc+ https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5141 |
Page 1 sur 1 |
| Auteur : | AsT [ 05 Nov 2013, 00:04 ] |
| Sujet du message : | Mode IM2 Cpc+ |
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 (-: |
|
| Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|