Envoyer un e-mail à Collection ThomsonCollection Thomson
EditoForum 2002Liens
Nanoreseau
Docs
Logiciels
Matériel
Imprimer le document
Retour à la liste

Le reset à... tiède !

On connaissait le reset à froid: le système vérifie qu'il se trouve à l'adresse $60FE ($20FE pour les MO) une valeur autre que $A55A. Auquel cas tous les registres, y compris les registres système de $6000 à $60FF ($2000 à $20FF pour les MO) sont réinitialisés.

On connaissait le reset à chaud: le système vérifie qu'il se trouve à la même adresse la valeur $A55A. Auquel cas les registres système ne sont pas réinitialisés.

Mais on méconnaît le reset à tiède. Sur les TO9, TO8, TO8D et TO9+, le système propose pourtant cette alternative pour le moins intéressante: le système, lors du reset, vérifie alors qu'il se trouve à l'adresse $60FE la valeur $A559. Auquel cas, il réinitialise les registres, y compris la palette, sans toucher aux registres système. Mais attention! Pas n'importe quelle palette: celle qui est sauvée en initialisation à l'adresse $5F40 dans la RAMB.

La possibilité apparaît alors de demander la réinitialisation de la palette au reset sans passer par une programmation du vecteur de reset. Cela est avantageux du fait que le reset peut être effectué logiciellement en sautant à l'adresse adéquate ou en utilisant l'instruction idoine, mais aussi matériellement en appuyant sur le poussoir du reset. Dans ce dernier cas, la réinitialisation de la palette ne pouvait être assurée.

Ainsi donc, avec le programme assembleur suivant:

         ...
         LDB    $E7C3      |
         ANDB   #$FE       | Passe en RAMB
         STB    $E7C3      |
         LDX    #PALETT    Pointe sur la palette TO7
         LDU    #$5F40     Pointe sur le buffer de palette
         LDA    #32        32 caractères à transférer
  PRESET LDB    ,X+        | Transfère
         STB    ,U+        | un caractère
         DECA               | Pour toute
         BNE    PRESET      | la palette
         LDB    #$59       | Active le
         STB    $60FF      | reset à tiède
         ...
		 
  PALETT FDB    $0000,$000F,$00F0,$00FF
         FDB    $0F00,$0F0F,$0FF0,$0FFF
         FDB    $0777,$033A,$03A3,$03AA
         FDB    $0A33,$0A3A,$0EE7,$007B

... ou le programme Basic:

  10 POKE&HE7C3,PEEK(&HE7C3)AND254           <Passe en RAMB
  20 FORI=&H5F40 TO &H5F40+31                <Balayage du buffer de palette
  30 READ A                                  <Lit une donnée
  40 POKE I,A                                <Transfère le caractère
  50 NEXT                                    <Pour toute la palette
  60 POKE&H60FF,&H59                         <Active le reset à tiède
  70 DATA 0,0,0,15,0,240,0,255,15,0,15,15,15,240,15,255,
  7,119,3,58,3,163,3,170,10,51,10,58,14,231,0,123

... vous assurerez une réinitialisation automatique de la palette au reset!

Le MO6, quant à lui, n’a pas de reset à tiède à proprement parler.

Pour réinitialiser les couleurs naturelles au reset sur MO6, effacer l’octet contenu en $20FF pourrait être suffisant, du moment que la valeur contenue en $20FE-$20FF est différente de $A55A. La palette des applications est alors réinitialisée. Mais, pour peu que la valeur contenue dans $1FDF en RAMB soit à $A5 (il n’y a jamais qu’une chance sur 256 qu’elle le soit), c’est la palette contenue dans cette même RAMB de l’adresse $1FE0 à $1FFF qui servira à l’entrée dans l’application, par exemple du Basic. Après initialisation de la palette, ce registre $1FDF est généralement mis à 0 dès l’entrée dans une application. Mais il est préférable, dans le bénéfice du doute, de l’effacer aussi. Dès lors, au début de vos programmes, insérez :

  CLR    $20FF      20 POKE &H20FF,0                        Efface flag de reset moniteur

... et si vous utilisez le registre $1FDF en RAMB, veillez à ne pas le laisser à $A5 :

  CALL   $04        10 POKE &HA7C0,PEEK(&HA7C0)AND 254      Passe en RAMB
  CLR    $1FDF      30 POKE &H1FDF,0                        Efface flag de reset palette
Site
Plus
Forums
Code
Créations

*Site en favoris
*Page en favoris
*Site en démarrage
*Page en démarrage


Haut de page

Collection Thomson 2015 © Ghislain Fournier & François Mouret