16466
EDUCATIF -> Cours, Tutoriaux
© cpc-power.com (2019)
 
 
 
Split-Rasters Test CRTC 1
cpc
 
 

NOTICE / MANUAL

TXT (2)

NOTICE TEXTE n° 1 (5.04 Ko)

ORG &8000 WRITE DIRECT "SPLIT.BIN" LD bc,0 CALL &BC38 ;ECRAN 21 XOR a LD bc,0 CALL &BC32 LD a,1 LD bc,&1818 CALL &BC32 LD a,2 LD bc,&1515 CALL &BC32 LD a,3 LD bc,&1A1A CALL &BC32 DI ; Desactiver les interruptions LD HL,(&38) ; Lire l'ancienne interruption LD (Sauver),HL ; Sauvegarder la valeur 16 bits LD HL,&C9FB ; Registre 16 bits EI (&FB) + RET (&C9) LD (&38),HL ; Ecrire en &0038 et &0039 le contenu du registre HL EI ; Interruption autorisees ;encre 0 - Noir LD BC,#7F00 ; 3 nops OUT (c),c ; 4 nops LD a,&54 ; 2 nops OUT (c),a ; 4 nops ;encre 1 - Jaune LD BC,#7F01 ; 3 nops OUT (c),c ; 4 nops LD a,&43 ; 2 nops OUT (c),a ; 4 nops ;encre 2 - Vert citron LD BC,#7F02 ; 3 nops OUT (c),c ; 4 nops LD a,&5A ; 2 nops OUT (c),a ; 4 nops ;encre 3 - Blanc LD BC,#7F03 ; 3 nops OUT (c),c ; 4 nops LD a,&4B ; 2 nops OUT (c),a ; 4 nops .loop ;encre 0 LD BC,#7F00 ; 3 nops OUT (c),c ; 4 nops LD B,&F5 ; Se connecter au PPI/8255 port B accessible via &F5xx .Balayage IN A,(C) ; Lire le contenu RRA ; On teste si le bit 0 = 1 JP nc,Balayage ; Si le bit 0 = 0 on boucle jusqu'a la fin du balayage ; On est en haut de l'ecran, on peut continuer le programme HALT ; Attendre interruption 1 HALT ; Attendre interruption 2 DI ; 1 nop NOP ; Position vertical (141 coin haut gauche) ;+8 pour ligne graphique suivante ;+64 pour ligne texte suivante LD BC,141+8+8+8+8+8+8+8 .WaitLoop NOP ; 1 nop DEC BC ; 2 nops LD A,B ; 1 nop OR C ; 1 nops JR NZ,WaitLoop; 3 nops, TOTAL 8 nops ; split colors (6 couleurs = 12 nops) LD b,&55 ; bleu vif par defaut (2 nops) LD c,&40 ; gris (2 nops) LD h,&5B ; cyan (2 nops) LD l,&4C ; rouge LD d,&4F ; magenta pastel LD e,&58 ; Position horizontal (40 colonne, 1 nop par colonne) DEFS 53,0 ;8 nops invisible + 4 nops border + 40 nops ecran normal + 4 nops border + 8 nops invisible = 64 nops ;SPLIT-RASTERS 1 ;8 nops invisible LD a,64 ;nombre de ligne graphique (2 nops) splitrasterligne211: DEFS 6,0 ;4 nops border gauche OUT (c),b ; 4 nops ;40 nops - ecran normal NOP OUT (c),c ; 4 nops OUT (c),h ; 4 nops OUT (c),l ; 4 nops OUT (c),d ; 4 nops OUT (c),e ; 4 nops NOP NOP OUT (c),d ; 4 nops OUT (c),l ; 4 nops OUT (c),h ; 4 nops OUT (c),c ; 4 nops OUT (c),b ; 4 nops NOP ;8 nops invisible DEFS 6,0 ;total 60 NOPS ;engendrera un decalage de 4 nops sur la prochaine boucle DEC a ; 1 nop jr nz,splitrasterligne211 ;3 nops ;SPLIT-RASTERS 2 ;8 nops invisible + 4 nops border + 40 nops ecran normal + 4 nops border + 8 nops invisible = 64 nops ;8 nops invisible LD a,120 ;nombre de ligne graphique (2 nops) splitrasterligne212: ;DEFS 5,0 ;-1 pour compenser le decalage NOP LD c,&56 ; vert LD h,&4E ; orange (2 nops) ;4 nops border gauche ;OUT (c),b ; 4 nops LD l,&4A ; jaune (2 nops) LD d,&52 ; vert vif ;40 nops - ecran normal NOP OUT (c),c ; 4 nops DEFS 5,0 OUT (c),h ; 4 nops DEFS 6,0 OUT (c),l ; 4 nops DEFS 5,0 OUT (c),d ; 4 nops DEFS 5,0 NOP OUT (c),b ; 4 nops NOP ;8 nops invisible DEFS 7,0 ;+1 pour compenser le decalage ;total 60 NOPS ;engendrera un decalage de 4 nops sur la prochaine boucle DEC a ; 1 nop jr nz,splitrasterligne212 ;3 nops OUT (c),b ; couleur d'origine (4 nops) EI ; 1 nop ; Test touche .Touche21 LD BC,&F40E OUT (C),C LD BC,&F6C0 OUT (C),C XOR A OUT (C),A LD BC,&F792 OUT (C),C LD BC,&F645 ;ligne 5 OUT (C),C LD B,&F4 IN A,(C) LD BC,&F782 OUT (C),C LD BC,&F600 OUT (C),C RLA ;Charge dans A la valeur du bit 7 (touche ESPACE) JR NC,Sortir21 LD BC,&F40E OUT (C),C LD BC,&F6C0 OUT (C),C XOR A OUT (C),A LD BC,&F792 OUT (C),C LD BC,&F649 ;ligne 9 OUT (C),C LD B,&F4 IN A,(C) LD BC,&F782 OUT (C),C LD BC,&F600 OUT (C),C RLA ;Charge dans A la valeur du bit 7 (touche DEL) RLA ;Charge dans A la valeur du bit 6 (touche JOY_FIRE0) RLA ;Charge dans A la valeur du bit 5 (touche JOY_FIRE1 Z) RLA ;Charge dans A la valeur du bit 4 (touche JOY_FIRE2 X) JP C,loop ;Si TIR du joystick n'a pas etait enfonce on boucle .Sortir21 ;retour au BASIC DI ; Desactiver les interruptions LD HL,(Sauver) ; Restauration des anciennes interruptions LD (&38),hl ; Ecrire EI ; Interruption autorisees RET .Sauver DW #0000 ;00 = &54 noir ;01 = &44 bleu ;02 = &55 bleu vif ;03 = &5C rouge fonce ;04 = &58 magenta ;05 = &5D mauve ;06 = &4C rouge vif ;07 = &45 pourpre ;08 = &4D magenta vif ;09 = &56 vert ;10 = &46 turquoise ;11 = &57 bleu ciel ;12 = &5E jaune ;13 = &40 gris ;14 = &5F bleu pastel ;15 = &4E orange ;16 = &47 rose ;17 = &4F magenta pastel ;18 = &52 vert vif ;19 = &42 vert marin ;20 = &53 turquoise vif ;21 = &5A vert citron ;22 = &59 vert pastel ;23 = &5B turquoise pastel ;24 = &4A jaune vif ;25 = &43 jaune pastel ;26 = &4B blanc
 

NOTICE TEXTE n° 2 (5.09 Ko)

ORG &8000 WRITE DIRECT "SPLIT2.BIN" LD bc,0 CALL &BC38 ;ECRAN 21 XOR a LD bc,0 CALL &BC32 LD a,1 LD bc,&1818 CALL &BC32 LD a,2 LD bc,&1515 CALL &BC32 LD a,3 LD bc,&1A1A CALL &BC32 DI ; Desactiver les interruptions LD HL,(&38) ; Lire l'ancienne interruption LD (Sauver),HL ; Sauvegarder la valeur 16 bits LD HL,&C9FB ; Registre 16 bits EI (&FB) + RET (&C9) LD (&38),HL ; Ecrire en &0038 et &0039 le contenu du registre HL EI ; Interruption autorisees ;encre 0 - Noir LD BC,#7F00 ; 3 nops OUT (c),c ; 4 nops LD a,&54 ; 2 nops OUT (c),a ; 4 nops ;encre 1 - Jaune LD BC,#7F01 ; 3 nops OUT (c),c ; 4 nops LD a,&43 ; 2 nops OUT (c),a ; 4 nops ;encre 2 - Vert citron LD BC,#7F02 ; 3 nops OUT (c),c ; 4 nops LD a,&5A ; 2 nops OUT (c),a ; 4 nops ;encre 3 - Blanc LD BC,#7F03 ; 3 nops OUT (c),c ; 4 nops LD a,&4B ; 2 nops OUT (c),a ; 4 nops .loop ;encre 0 LD BC,#7F00 ; 3 nops OUT (c),c ; 4 nops LD B,&F5 ; Se connecter au PPI/8255 port B accessible via &F5xx .Balayage IN A,(C) ; Lire le contenu RRA ; On teste si le bit 0 = 1 JP nc,Balayage ; Si le bit 0 = 0 on boucle jusqu'a la fin du balayage ; On est en haut de l'ecran, on peut continuer le programme HALT ; Attendre interruption 1 HALT ; Attendre interruption 2 DI ; 1 nop ;NOP ;(la seule difference c'est le decalage d'un nop) ; Position vertical (141 coin haut gauche) ;+8 pour ligne graphique suivante ;+64 pour ligne texte suivante LD BC,141+8+8+8+8+8+8+8 .WaitLoop NOP ; 1 nop DEC BC ; 2 nops LD A,B ; 1 nop OR C ; 1 nops JR NZ,WaitLoop; 3 nops, TOTAL 8 nops ; split colors (6 couleurs = 12 nops) LD b,&55 ; bleu vif par defaut (2 nops) LD c,&40 ; gris (2 nops) LD h,&5B ; cyan (2 nops) LD l,&4C ; rouge LD d,&4F ; magenta pastel LD e,&58 ; Position horizontal (40 colonne, 1 nop par colonne) DEFS 53,0 ;8 nops invisible + 4 nops border + 40 nops ecran normal + 4 nops border + 8 nops invisible = 64 nops ;SPLIT-RASTERS 1 ;8 nops invisible LD a,64 ;nombre de ligne graphique (2 nops) splitrasterligne211: DEFS 6,0 ;4 nops border gauche OUT (c),b ; 4 nops ;40 nops - ecran normal NOP OUT (c),c ; 4 nops OUT (c),h ; 4 nops OUT (c),l ; 4 nops OUT (c),d ; 4 nops OUT (c),e ; 4 nops NOP NOP OUT (c),d ; 4 nops OUT (c),l ; 4 nops OUT (c),h ; 4 nops OUT (c),c ; 4 nops OUT (c),b ; 4 nops NOP ;8 nops invisible DEFS 6,0 ;total 60 NOPS ;engendrera un decalage de 4 nops sur la prochaine boucle DEC a ; 1 nop jr nz,splitrasterligne211 ;3 nops ;SPLIT-RASTERS 2 ;8 nops invisible + 4 nops border + 40 nops ecran normal + 4 nops border + 8 nops invisible = 64 nops ;8 nops invisible LD a,120 ;nombre de ligne graphique (2 nops) splitrasterligne212: ;DEFS 5,0 ;-1 pour compenser le decalage NOP LD c,&56 ; vert LD h,&4E ; orange (2 nops) ;4 nops border gauche ;OUT (c),b ; 4 nops LD l,&4A ; jaune (2 nops) LD d,&52 ; vert vif ;40 nops - ecran normal NOP OUT (c),c ; 4 nops DEFS 5,0 OUT (c),h ; 4 nops DEFS 6,0 OUT (c),l ; 4 nops DEFS 5,0 OUT (c),d ; 4 nops DEFS 5,0 NOP OUT (c),b ; 4 nops NOP ;8 nops invisible DEFS 7,0 ;+1 pour compenser le decalage ;total 60 NOPS ;engendrera un decalage de 4 nops sur la prochaine boucle DEC a ; 1 nop jr nz,splitrasterligne212 ;3 nops OUT (c),b ; couleur d'origine (4 nops) EI ; 1 nop ; Test touche .Touche21 LD BC,&F40E OUT (C),C LD BC,&F6C0 OUT (C),C XOR A OUT (C),A LD BC,&F792 OUT (C),C LD BC,&F645 ;ligne 5 OUT (C),C LD B,&F4 IN A,(C) LD BC,&F782 OUT (C),C LD BC,&F600 OUT (C),C RLA ;Charge dans A la valeur du bit 7 (touche ESPACE) JR NC,Sortir21 LD BC,&F40E OUT (C),C LD BC,&F6C0 OUT (C),C XOR A OUT (C),A LD BC,&F792 OUT (C),C LD BC,&F649 ;ligne 9 OUT (C),C LD B,&F4 IN A,(C) LD BC,&F782 OUT (C),C LD BC,&F600 OUT (C),C RLA ;Charge dans A la valeur du bit 7 (touche DEL) RLA ;Charge dans A la valeur du bit 6 (touche JOY_FIRE0) RLA ;Charge dans A la valeur du bit 5 (touche JOY_FIRE1 Z) RLA ;Charge dans A la valeur du bit 4 (touche JOY_FIRE2 X) JP C,loop ;Si TIR du joystick n'a pas etait enfonce on boucle .Sortir21 ;retour au BASIC DI ; Desactiver les interruptions LD HL,(Sauver) ; Restauration des anciennes interruptions LD (&38),hl ; Ecrire EI ; Interruption autorisees RET .Sauver DW #0000 ;00 = &54 noir ;01 = &44 bleu ;02 = &55 bleu vif ;03 = &5C rouge fonce ;04 = &58 magenta ;05 = &5D mauve ;06 = &4C rouge vif ;07 = &45 pourpre ;08 = &4D magenta vif ;09 = &56 vert ;10 = &46 turquoise ;11 = &57 bleu ciel ;12 = &5E jaune ;13 = &40 gris ;14 = &5F bleu pastel ;15 = &4E orange ;16 = &47 rose ;17 = &4F magenta pastel ;18 = &52 vert vif ;19 = &42 vert marin ;20 = &53 turquoise vif ;21 = &5A vert citron ;22 = &59 vert pastel ;23 = &5B turquoise pastel ;24 = &4A jaune vif ;25 = &43 jaune pastel ;26 = &4B blanc
 



Goto Top
CPC-POWER/CPCSOFTS, programmation par Kukulcan © 2007-2024 tous droits réservés.
Reproduction sans autorisation interdite. Tous les titres utilisés appartiennent à leurs propriétaires respectifs.
Hébergement Web, Mail et serveurs de jeux haute performance