Amstrad PlusDécouverte de la gamme Old et Plus des Cpc d'Amstrad.
Sujet précédent :: Sujet suivant |
Auteur |
Message |
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Ven 21 Juil - 17:16 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
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 :
Citation: | 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/iMPACT
Par le pouvoir du crâne ancestral....
Dernière édition par Ast le Sam 24 Déc - 01:55 (2022); édité 21 fois
|
|
Revenir en haut |
|
|
roudoudou
Hors ligne
Inscrit le: 14 Juil 2016 Messages: 430
Localisation: LYON Point(s): 50 Moyenne de points: 0,12
|
Posté le: Ven 21 Juil - 19:48 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
gros dossier merci!
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Ven 21 Juil - 19:48 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
Il en manque encore, mais ça va venir ^^
Encore une chose, j'ai volontairement exclu certaines infos comme les registres internes (VCC & VLC) _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
cmp
Hors ligne
Inscrit le: 08 Sep 2014 Messages: 186
Localisation: nord Point(s): 9 Moyenne de points: 0,05
|
Posté le: Ven 21 Juil - 23:09 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
Et ca marche bien tout ca ?
_________________ CMP from impact cpc
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Ven 21 Juil - 23:11 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
cmp a écrit: | Et ca marche bien tout ca ?
|
A toi de nous dire... Tu es sensé metttre en pratique ce que tu as appris. Alors ? t'en penses quoi ? _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
Publicité
|
Posté le: Ven 21 Juil - 23:11 (2017) Sujet du message: Publicité |
|
|
|
|
Revenir en haut |
|
|
cmp
Hors ligne
Inscrit le: 08 Sep 2014 Messages: 186
Localisation: nord Point(s): 9 Moyenne de points: 0,05
|
Posté le: Ven 21 Juil - 23:12 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
Pour la rupture verticale je pense que AST peut se servir de mes photos ^^
J'en ai un bon paquet _________________ CMP from impact cpc
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Ven 21 Juil - 23:17 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
cmp a écrit: | Pour la rupture verticale je pense que AST peut se servir de mes photos ^^
J'en ai un bon paquet
|
Ca, je ne vais pas en parler encore... Y'a du temps ! _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
roudoudou
Hors ligne
Inscrit le: 14 Juil 2016 Messages: 430
Localisation: LYON Point(s): 50 Moyenne de points: 0,12
|
Posté le: Sam 22 Juil - 08:11 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
Ast m'a bien montré une photo, mais j'suis pas sûr que ça soit ça dont tu parles...
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Sam 22 Juil - 08:54 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
roudoudou a écrit: | Ast m'a bien montré une photo, mais j'suis pas sûr que ça soit ça dont tu parles...
|
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/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
roudoudou
Hors ligne
Inscrit le: 14 Juil 2016 Messages: 430
Localisation: LYON Point(s): 50 Moyenne de points: 0,12
|
Posté le: Sam 22 Juil - 09:32 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
C'est vrai qu'il est au pays de la Fricadelle
|
|
Revenir en haut |
|
|
Publicité
|
Posté le: Sam 22 Juil - 09:32 (2017) Sujet du message: Publicité |
|
|
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Sam 22 Juil - 09:40 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
Non, c'est juste que Jésus l'Habite! _________________ Ast/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
cmp
Hors ligne
Inscrit le: 08 Sep 2014 Messages: 186
Localisation: nord Point(s): 9 Moyenne de points: 0,05
|
Posté le: Sam 22 Juil - 22:37 (2017) Sujet du message: *****Programmez vos ruptures facilement |
|
|
OUI
sur le coup j'ai un peu bloqué
mais là sérieux je viens de récuperer un CPC en TYP1 la photo est d'actualité ^^ _________________ CMP from impact cpc
|
|
Revenir en haut |
|
|
Hwikaa
Hors ligne
Inscrit le: 20 Mar 2020 Messages: 4 Point(s): 4 Moyenne de points: 1,00
|
Posté le: Ven 20 Mar - 16:20 (2020) Sujet du message: *****Programmez vos ruptures facilement |
|
|
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 :
- 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 ?
- je n'ai pas compris l'intervention du ei:halt...
Merci d'avance et bisous. ^^
|
|
Revenir en haut |
|
|
Ast Administrateur
Hors ligne
Inscrit le: 05 Sep 2014 Messages: 3 169 Point(s): 609 Moyenne de points: 0,19
|
Posté le: Ven 20 Mar - 16:37 (2020) Sujet du message: *****Programmez vos ruptures facilement |
|
|
Hwikaa a écrit: | 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 :
- 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 ?
- je n'ai pas compris l'intervention du ei:halt...
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/iMPACT
Par le pouvoir du crâne ancestral....
|
|
Revenir en haut |
|
|
Hwikaa
Hors ligne
Inscrit le: 20 Mar 2020 Messages: 4 Point(s): 4 Moyenne de points: 1,00
|
Posté le: Ven 20 Mar - 16:51 (2020) Sujet du message: *****Programmez vos ruptures facilement |
|
|
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à ?
|
|
Revenir en haut |
|
|
|
|