Amstrad Plus Forum Index

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

*****Programmez vos ruptures facilement
Goto page: 1, 2  >
 
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> CRTC
Previous topic :: Next topic  
Author Message
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Fri 21 Jul - 17:16 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Avant de commencer cet article, je tiens à remercier plus particulièrement CHANY/NPS, celui grâce à qui j'ai appris à maitriser les Ruptures, simples au départ, puis ligne à ligne par la suite.
La méthode que je vais vous expliquer provient de Duncan des 5KB, qui l'a, au départ, enseignée à Chany qui me l’a, par la suite, transmise. J'ai à mon tour, transmis cette technique à CMP, et je m'en vais vous l’expliquer aujourd'hui.

Pour être franc, ça fait déjà un moment que ça me trotte dans la tête, mais aujourd'hui grâce à une demande expresse de Plissken (le survivant), voyons cela de plus près.

1. La Rupture

Tout d'abord, qu'est ce qu'une rupture ? En voilà une bonne question mon Colonel ? La rupture est une technique permettant de changer l'adresse vidéo en cours de balayage et cela, plusieurs fois par ligne. Elle fut utilisée jadis, dans quelques jeux comme "Mission Genocide", "Axys" et d'autres, mais aussi par les grands noms du Cpc comme Longshot par exemple.
C'est en effet celui qui l'a démocratisé et pour cela je l'en remercie.

Maitriser cette technique nécessite de bien connaître l'endroit où se déclenchent les interruptions. Pour cela, nous aurons besoin d'un tableau que j'ai très souvent utilisé et qui me sert encore.
Comme je suis bon prince, je vous livre le fameux "schéma" qui guidera vos pas, jusqu'à l'élaboration de l'écran final.

Tableau des Ruptures tel que Chany me l'a transmis en 1993








Etudions ceci de plus près.
Ce tableau schématise votre écran Cpc et ses 39 lignes affichées verticalement. Un caractère représente un bloc de 8 lignes, ce qui signifie que quand on passe de la ligne 1 à la ligne 2, 8 lignes auront été affichées. (dans une configuration normale, bien sur!)
Vérifions quand même au cas où :

39*8=312
39 lignes de 8 blocs = 312 lignes totales affichées verticalement, c'est bien ça ! Hourra !

Ensuite, il ne vous aura pas échappé qu'il y a 5 lignes horizontales rouges. Celles ci symbolisent l'endroit exact où sont envoyées les interruptions, soit toutes les 52 lignes sur Cpc. Il y a 6 interruptions sur Cpc (6x52=312) alors pourquoi n'y a t'il pas 6 lignes rouges symbolisés ? Simplement car la dernière interruption arrive à la ligne 39.

Vérifions quand même si tout est bon. La première interruption se déclenche à la 6ème ligne et demie donc :

6*8=48
48+4=52
6 lignes de 8 blocs = 48 lignes + (1/2*8)
                               48          + 4
                            = 52 -> la 1ère interruption arrive bien à la 52ème ligne, la deuxième 52 lignes plus bas et ainsi de suite !

Pour finir, on aperçoit, pour les plus attentifs, deux zones situées, une tout en haut de l'écran et l'autre tout en bas de l'écran où est inscrit 'NON VISIBLE".
Ces zones se situent simplement dans la partie non vue de l'écran, en gros sous le plastique du moniteur.

C'est simple pour le moment, non ?

1a. Elaboration de ma première Rupture.

Pour la première rupture, nous allons essayer de créer 3 zones distinctes, appelées rupture 1, rupture 2, et rupture 3.
Souvenez vous d'une chose, le total des lignes affichées pour être à 50 Hz doit être de 312 lignes soit 39 caractères de 8 lignes !

On va dire que :

Rupture 1 = 8 lignes
Rupture 2 = 20 lignes
Rupture 3 = ?

Calcul simple :

Sachant que le total des lignes doit être égal à 39 nous avons donc :

8+20=28 lignes

il reste donc :

39-28=11 lignes à afficher pour être à 50 hz.

Récapitulons :

Quote:
Rupture 1 = 8 lignes
Rupture 2 = 20 lignes
Rupture 3 = 11 lignes











La trame est maintenant tracée. Mais comment ça marche pour la suite ?

1b. Les registres du Crtc 6845.

Avant de vous lancer à corps perdu dans l'élaboration d'une rupture, vous devez savoir au préalable que ceci ne sera possible qu'après modification de certains registres du Crtc.
Oui, mais lesquels, et à quoi servent il ?

Dans l'exemple présent, nous aurons besoin de modifier le Registre 7, le Registre 4, puis éventuellement les Registres 12 et 13. C'est tout !
Commençons par examiner de plus près ces fameux registres.

-Le Registre 7 détermine l'envoi du signal VBL
-Le Registre 4 détermine le nombre de caractères -1 à afficher en vertical
-Les Registres 12 & 13 déterminent pour leur part les poids forts et faibles de l'adresse écran, l'OffseT quoi ! (Non, Plissken, pas celui de Futurs')

Passons maintenant à l'élaboration de cette rupture tant attendue.... Un peu de code vous ferait-il du bien ? On commence ?

Code:
;
; Ma première Rupture
; ---Ast/iMPACT Juillet 2017
;
     org #1000
;
     di ; on commence par couper les interruptions
     ld hl,#c9fb ; on empêche le système de nous embêter
     ld (#38),hl
     im 1 ; Nous sommes en Mode d'interruption 1 - Est-ce bien nécessaire de le préciser ?
;
main ld b,#f5 ; Boucle attente VbL
vsync in a,(c) ; dois-je expliquer tout le test ?
        rra
        jr nc,vsync
;
        ld b,4*8 ; attente de 32 lignes (4x8)
b1    fill 60,0 ; 60 Nops
       djnz b1
;
       ld bc,#bc07 ; Kill VBL
       ld a,#7f
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc04 ; Rupture 1
       ld a,8-1
       out (c),c
       inc b
       out (c),a
;
       ei
       halt
       ld b,5*8 +4 ; attente 44 lignes
b2    fill 60,0 ; 60 Nops
       djnz b2

       ld bc,#bc04 ; Rupture 2
       ld a,20-1
       inc b
       out (c),a
;
       ld b,20*8 ; attente 160 lignes
b3    fill 60,0 ; 60 Nops
       djnz b3
;
       ld bc,#bc04 ; Rupture 3
       ld a,11-1       
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc07 ; On repositionne la VBL
       ld a,11-4 
       out (c),c
       inc b
       out (c),a
;
       jp main 












Voici ce que vous devriez avoir sur votre Cpc!


Maintenant, voyons pas à pas, les détails de cette routine juste après la VbL :

Code:
...
      ld b,4*8 ; attente 4 lignes de 8 blocs
b1  fill 60,0
      djnz b1











Pourquoi ? Cette partie permet de passer de la ligne 1 à la ligne 4 (Partie NON VISIBLE). TOUTES nos ruptures commenceront à partir de la ligne 4, soit à partir du moment où commence, l'écran visible. 

Code:
       ld bc,#bc07 ; Kill VBL
       ld a,#7f
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc04 ; Rupture 1
       ld a,8-1
       out (c),c
       inc b
       out (c),a











Kill Vbl : Pour éviter d'avoir la vbl visible à chaque changement d'écran, on provoque "volontairement" un overflow du registre 7. Qu'est ce que cela signifie ?
Nous lui mettons simplement une valeur qu'il ne pourra jamais atteindre (#7f). Donc pas de VBL durant le nouvel écran. Veuillez noter qu'il suffit simplement que la valeur du registre 7 soit supérieur à la valeur du registre 4 +1. Dans le cas de notre exemple, on aurait pu mettre le registre 7 à 21 pour être certain que cette valeur ne soit jamais atteinte.

Rupture1 : Nous voulons afficher 8 lignes. Le Registre 4 allant de 0 à X, nous enlevons 1 à la valeur que nous lui donnons, vu qu'il commence une valeur plus tôt (0).

Code:
       ei
       halt
       ld b,5*8 +4 ; attente 44 lignes
b2    fill 60,0 ; 60 Nops
       djnz b2











La Rupture a demarré à partir de la ligne 4 et continue jusqu'à la ligne 12 (4+8).
En cours de chemin, nous avons un Halt entre la ligne 6 et 7 puis il nous reste 5 lignes et demie pour aller à la ligne 12 soit 5*8=40 + 4 (une demie ligne) 44 lignes.
On attends donc que 44 lignes se soient affichées avant de passer à la rupture 2.

Code:
;
       ld bc,#bc04 ; Rupture 2
       ld a,20-1
       inc b
       out (c),a











Une fois les 44 lignes affichées, on doit à nouveau modifier le registre 4. Je vous rappelle que nous sommes à la ligne 12 du schèma!
On voulait afficher 20 lignes pour la rupture 2, c'est chose faite ! Une fois affichées, nous serons à la ligne 32.

Code:
;
       ld b,20*8 ; attente 160 lignes
b3    fill 60,0 ; 60 Nops
       djnz b3











On attends le temps nécessaire avant de passer au dernier écran soit 160 lignes (20*8). Ensuite, nous arrivons à la ligne 32 du schèma.
Code:
;
       ld bc,#bc04 ; Rupture 3
       ld a,11-1       
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc07 ; On repositionne la VBL
       ld a,11-4 
       out (c),c
       inc b
       out (c),a











Au dernier écran, on repositionne la VBL, parce qu'il faut au moins 1 vbl par frame.
Le calcul est fort simple. Nous nous trouvons à la ligne 32. Pour aller à la ligne 39, il faut 7 lignes, donc le registre 7 sera égal à 7.

Pour la rupture 3, nous avons vu que pour parcourir toute la frame, il faut aller jusqu'à la ligne 39 soit il reste 7 lignes + les 4 premières NON VISIBLES qu'on va ajouter à la fin.
Calcul : 7+4=11. Voilà donc, d'où vient la valeur 11 dans le registre 4. En mettant 11 dans le registre 4, nous nous retrouvons à la 4ème ligne et la boucle est bouclée.

Petit truc : vous aurez surement remarqué que je mets volontairement la valeur 11-4 pour le registre 7 ? Le -4, c'est juste un moyen mnémotechnique pour vous de calculer rapidement sa valeur. On prends la valeur du dernier registre 4 (11) et on soustrait les 4 lignes de la partie NON VISIBLE du haut.

Des questions sur les Ruptures ? C'est le moment avant d'attaquer les ruptures lignes à lignes.


2. La Rupture ligne à ligne.

La rupture ligne à ligne, qu'est ce que c'est ? Qu'est ce que cela permet ?
Au lieu de changer l'adresse écran (l'offset) tous les blocs de 8 lignes, nous avons la possibilité de la changer toutes les lignes, ce qui permet des effets connus et reconnus sur Cpc, comme les plasmas, les rubbers, les rasters verticaux... etc...

Ceci est possible grâce au registre 9 du Crtc. Voyons quel est son rôle exact ?

Le registre 9 du Crtc donne le nombre de lignes de pixels affichées par "bloc". Ce registre varie de 0 à 31 sur Cpc. Sa valeur par défaut est de 7 soit 8 lignes (0 à 7, faites le compte)
Concernant, le nombre de lignes affichées par "bloc", quelques explications s'imposent. Chaque ligne élémentaire (1 à 39 sur le schèma) est composée de Blocs (8) qui composent le nombre de lignes affichées, soit pour aller de la ligne 1 à la ligne 4 sur Cpc, on affiche 4 lignes (registre 4-1) de 8 pixels (registre 9 -1). 
On ne peut pas faire plus clair. 
La première rupture ligne à ligne fut codée par Longshot (encore lui) dans la Amazing Demo. Regardez simplement la Supra Demo part !


Amazing Demo - Supra Demo de Longshot/Logon System

Comment cela fonctionne si l'on veut modifier l'offset à chaque ligne ? Il suffit de mettre simplement les registres 9 et 4 à 0 !
Attention cependant, cette technique ne fonctionne pas du tout sur Crtc type 2 !!!
En effet, le Crtc type 2, ne supporte pas d'avoir ces 2 registres à zéro, et vous aurez un bel écran noir en guise de récompense.
Une solution a néanmoins été trouvée. Encore suffisait-il d'y penser ; mettre le R4 à 0 (compteur de ligne) et le Registre 9>0 (hauteur de lignes).
Il suffit pour s'en convaincre de regarder les démos "Tire au flan/Overlanders", "Yap!/Logon System"... 
Sachez que pour les 2 démos citées, le registre 4 est à 0 et le registre 9 à 1.
On pourrait appeler cela de la rupture 2 lignes à 2 lignes.


Tire au Flan de Shap, Madram et Beb / Overlanders

Nous allons reprendre la rupture précédente et se dire que nous voulons une rupture ligne à ligne sur la rupture 2!
Pour ce faire, rien de plus simple, il suffira de mettre les registres 4 et 9 à 0. Il faudra surtout ne pas oublier de remettre le registre 9 à sa bonne valeur, une fois la ligne à ligne affichée, soit après avoir affiché les 160 lignes.

Code:
;
; Ma première Rupture ligne a ligne
; ---Ast/iMPACT Juillet 2017
;
     org #1000
;
     di ; on commence par couper les interruptions
     ld hl,#c9fb ; on empêche le système de nous embêter
     ld (#38),hl
     im 1 ; Nous sommes en Mode d'interruption 1 - Est-ce bien nécessaire de le préciser ?
;
main ld b,#f5 ; Boucle attente VbL
vsync in a,(c) ; dois-je expliquer tout le test ?
        rra
        jr nc,vsync
;
        ld b,4*8 ; attente de 32 lignes (4x8)
b1    fill 60,0 ; 60 Nops
       djnz b1
;
       ld bc,#bc07 ; Kill VBL
       ld a,#7f
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc04 ; Rupture 1
       ld a,8-1
       out (c),c
       inc b
       out (c),a
;
       ei
       halt
       ld b,5*8 +4 ; attente 44 lignes
b2    fill 60,0 ; 60 Nops
       djnz b2
;
; Début Rupture ligne a ligne -> r4=0 et r9=0
;
       ld bc,#bc04 ; Rupture 2
       ld a,0; ancienne valeur 20-1
       inc b
       out (c),a
;   
       ld bc,#bc09 ; Hauteur des lignes rupture 2       
       ld a,7-7
       out (c),c
       inc b
       out (c),a
;
       ld b,20*8 ; attente 160 lignes
b3    fill 60,0 ; 60 Nops
       djnz b3
;
; On revient à la normale -> r9=7
;
       ld bc,#bc04 ; Rupture 3
       ld a,11-1       
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc09 ; Hauteur des lignes Rupture 3 et 1       
       ld a,7      ; on remet la hauteur des lignes à 7 (soit 8 lignes affichées en hauteur)
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc07 ; On repositionne la VBL
       ld a,11-4 
       out (c),c
       inc b
       out (c),a
;
       jp main 











Mais qu'est qui a changé au juste dans le code ? Découvrons le ensemble.
Code:
;
; Début Rupture ligne a ligne -> r4=0 et r9=0
;
       ld bc,#bc04 ; Rupture 2
       ld a,0; ancienne valeur 20-1
       inc b
       out (c),a
;   
       ld bc,#bc09 ; Hauteur des lignes rupture 2       
       ld a,7-7
       out (c),c
       inc b
       out (c),a











On mets les registres 4 et 9 à 0 avant de début de la Rupture ligne à ligne.

Code:
;
; On revient à la normale -> r9=7
;
       ld bc,#bc04 ; Rupture 3
       ld a,11-1       
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc09 ; Hauteur des lignes Rupture 3 et 1       
       ld a,7      ; on remets la hauteur des lignes à 7 (soit 8 lignes affichées en hauteur)
       out (c),c
       inc b
       out (c),a











On remets le registre 9 à sa valeur d'origine, soit 7.

 Voilà le résultat :



Ah !!! Mince que se passe t'il ? Juste après le '8, nous avons un overflow du registre 9. Comment cela se manifeste t'il ? Nous avons 4 fois '1 affiché juste sous le '8.
En effet, il faut changer la valeur du registre 9 au moment où son compteur interne revient à zéro. Si ce n'est pas le cas, le registre 9 ira jusqu'à sa valeur maximum soit 31 (32 lignes).

Petit calcul :  32/8=4 lignes de caractères affichées ! Voilà le pourquoi du comment. Mais alors quelle serait la solution à tout ceci ?

Code:
;
; Ma première Rupture ligne a ligne corrigée
; ---Ast/iMPACT Juillet 2017
;
     org #1000
;
     di ; on commence par couper les interruptions
     ld hl,#c9fb ; on empêche le système de nous embêter
     ld (#38),hl
     im 1 ; Nous sommes en Mode d'interruption 1 - Est-ce bien nécessaire de le préciser ?
;
main ld b,#f5 ; Boucle attente VbL
vsync in a,(c) ; dois-je expliquer tout le test ?
        rra
        jr nc,vsync
;
        ld b,4*8 ; attente de 32 lignes (4x8)
b1    fill 60,0 ; 60 Nops
       djnz b1
;
       ld bc,#bc07 ; Kill VBL
       ld a,#7f
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc04 ; Rupture 1
       ld a,8-1
       out (c),c
       inc b
       out (c),a
;
       ei
       halt
       ld b,5*8 +4-2 ; attente 44 lignes -2 pour éviter l'overflow du registre 9
b2    fill 60,0 ; 60 Nops
       djnz b2
;
; Début Rupture ligne a ligne -> r4=0 et r9=0
;
       ld bc,#bc04 ; Rupture 2
       ld a,0; ancienne valeur 20-1
       inc b
       out (c),a
;   
       ld bc,#bc09 ; Hauteur des lignes rupture 2       
       ld a,7-7
       out (c),c
       inc b
       out (c),a
;
       ld b,20*8 ; attente 160 lignes
b3    fill 60,0 ; 60 Nops
       djnz b3
;
; On revient à la normale -> r9=7
;
       ld bc,#bc04 ; Rupture 3
       ld a,11-1       
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc09 ; Hauteur des lignes Rupture 3 et 1       
       Ld a,7      ; on remet la hauteur des lignes à 7 (soit 8 lignes affichées en verticale)
       out (c),c
       inc b
       out (c),a
;
       ld bc,#bc07 ; On repositionne la VBL
       ld a,11-4 
       out (c),c
       inc b
       out (c),a
;
       jp main 











Qu'est-ce qui change par rapport à la version précédente  ?

Code:
       ei
       halt
       ld b,5*8 +4-2 ; attente 44 lignes -2 pour éviter l'overflow du registre 9
b2    fill 60,0 ; 60 Nops
       djnz b2
;
; Début Rupture ligne a ligne -> r4=0 et r9=0
;











On enlève 2 lignes à la boucle d'attente avant de modifier la valeur des registres 4 et 9 à 0, ceci afin d'éviter ce fameux overflow !
Il n'existe pas d'overflow du registre 9 sur Crtc 3, donc sur Cpc+.

Le résultat est sans appel! Voici notre belle rupture ligne à ligne. Elle commence cette fois-ci, bien après la ligne 8 et ce, sans aucun overflow.



3. La Rupture Verticale.

A suivre... ou ? quand ? comment ?

--------

En rapport :
-Dossier Crtc
-Calcul Valeur Hcc
-Overflow du Registre 1
-Rvi, la suite logique ?
-Conversion Adresse CrtC...
-Adresser les ports du Crtc
-Conversion Adresse écran en Adresse Crtc
-Programmez vos Ruptures encore plus facilement
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Last edited by Ast on Fri 20 Mar - 17:44 (2020); edited 20 times in total
Back to top
Publicité






PostPosted: Fri 21 Jul - 17:16 (2017)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Fri 21 Jul - 19:48 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

gros dossier Smile
merci!


Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Fri 21 Jul - 19:48 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Il en manque encore, mais ça va venir ^^

Encore une chose, j'ai volontairement exclu certaines infos comme les registres internes (VCC & VLC)
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
cmp


Offline

Joined: 08 Sep 2014
Posts: 185
Localisation: nord
Masculin Balance (23sep-22oct)
Point(s): 8
Moyenne de points: 0.04

PostPosted: Fri 21 Jul - 23:09 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Et ca marche bien tout ca ?




Smile
_________________
CMP from impact cpc


Back to top
Skype
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Fri 21 Jul - 23:11 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

cmp wrote:
Et ca marche bien tout ca ?




Smile


A toi de nous dire... Tu es sensé metttre en pratique ce que tu as appris. Alors ? t'en penses quoi ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
cmp


Offline

Joined: 08 Sep 2014
Posts: 185
Localisation: nord
Masculin Balance (23sep-22oct)
Point(s): 8
Moyenne de points: 0.04

PostPosted: Fri 21 Jul - 23:12 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Pour la rupture verticale Smile je pense que AST peut se servir de mes photos ^^




J'en ai un bon paquet Smile  
_________________
CMP from impact cpc


Back to top
Skype
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Fri 21 Jul - 23:17 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

cmp wrote:
Pour la rupture verticale Smile je pense que AST peut se servir de mes photos ^^




J'en ai un bon paquet Smile  


Ca, je ne vais pas en parler encore... Y'a du temps !
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Sat 22 Jul - 08:11 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Ast m'a bien montré une photo, mais j'suis pas sûr que ça soit ça dont tu parles... Mr. Green

Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sat 22 Jul - 08:54 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

roudoudou wrote:
Ast m'a bien montré une photo, mais j'suis pas sûr que ça soit ça dont tu parles... Mr. Green





On pourrait appeler ça une rupture!


Pour info: CMP a eu la même photo, d'ailleurs tout est parti de lui la veille...
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Sat 22 Jul - 09:32 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

C'est vrai qu'il est au pays de la Fricadelle Razz

Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sat 22 Jul - 09:40 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Non, c'est juste que Jésus l'Habite! Mort de Rire
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
cmp


Offline

Joined: 08 Sep 2014
Posts: 185
Localisation: nord
Masculin Balance (23sep-22oct)
Point(s): 8
Moyenne de points: 0.04

PostPosted: Sat 22 Jul - 22:37 (2017)    Post subject: *****Programmez vos ruptures facilement Reply with quote

OUI Smile


sur le coup Smile j'ai un peu bloqué Smile


mais là sérieux je viens de récuperer un CPC en TYP1 Smile la photo est d'actualité ^^
_________________
CMP from impact cpc


Back to top
Skype
Hwikaa


Offline

Joined: 20 Mar 2020
Posts: 3
Masculin
Point(s): 3
Moyenne de points: 1.00

PostPosted: Fri 20 Mar - 16:20 (2020)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Bonjour les gens !


Alors je suis très content, j'ai pu compiler Rasm sur mon Mac, saisir à la pogne le premier listing de cette page - pour bien comprendre ce que je faisais - et créer un dsk que j'ai pu lire dans RVM et ainsi constater que tout fonctionnait parfaitement. Youpi.


Cela dit, il y a deux petits points qui me restent obscurs, j'espère qu'une âme charitable voudra bien m'éclairer :
  1. les 60 nops d'attente... je n'en suis pas certain à 100% mais j'imagine que ça correspond au temps nécessaire pour parcourir la largeur de l'écran ?
  2. je n'ai pas compris l'intervention du ei:halt...  Sad

Merci d'avance et bisous. ^^


Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Fri 20 Mar - 16:37 (2020)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Hwikaa wrote:
Bonjour les gens !


Alors je suis très content, j'ai pu compiler Rasm sur mon Mac, saisir à la pogne le premier listing de cette page - pour bien comprendre ce que je faisais - et créer un dsk que j'ai pu lire dans RVM et ainsi constater que tout fonctionnait parfaitement. Youpi.


Cela dit, il y a deux petits points qui me restent obscurs, j'espère qu'une âme charitable voudra bien m'éclairer :
  1. les 60 nops d'attente... je n'en suis pas certain à 100% mais j'imagine que ça correspond au temps nécessaire pour parcourir la largeur de l'écran ?
  2. je n'ai pas compris l'intervention du ei:halt...  Sad

Merci d'avance et bisous. ^^


1. Comme tu l'as bien compris, 1 rasterline (ou une ligne) prends 64 micro secondes (ou nops au choix). Il faut additionner les 60 nops attente+4nops du djnz pour avoir les fameux 64 nops.

2. Dans le cas des ruptures expliquées, le ei:halt attends et provoque une int à la ligne 51. Ensuite dans le déroulé, tu peux te positionner plus finement.

3. From France with love.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
Hwikaa


Offline

Joined: 20 Mar 2020
Posts: 3
Masculin
Point(s): 3
Moyenne de points: 1.00

PostPosted: Fri 20 Mar - 16:51 (2020)    Post subject: *****Programmez vos ruptures facilement Reply with quote

Ah, super, c'était ça l'info qu'il me manquait : le djnz qui prend 4 nops. Ça porte le tout à 64 nops, ça fait sens. Merci David !


Pour le ei:halt, c'est toujours pas clair pour moi. Quelle est la raison de sa présence ? Ça apporte quoi ? Pourquoi on ne le fait qu'une fois à ce moment-là ?


Back to top
Display posts from previous:   
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> CRTC All times are GMT + 2 Hours
Goto page: 1, 2  >
Page 1 of 2

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group