2016-09-04 1 views
3

au moins en cours d'exécution VICE 2.4:

PRINT PEEK(53280) 
254 

POKE 53280,14 

PRINT PEEK(53280) 
254 

Il est clair que only bits #0-#3 are used, et que la valeur "correcte" est obtenue avec AND 15, mais pourquoi est-ce que le 6510 définit les bits supérieurs à 1?

Répondre

4

L'UC 6510 ne définit pas les bits supérieurs inutilisés sur 1; au contraire, il n'y a pas de mémoire pour sauvegarder les bits supérieurs dans les registres VIC appropriés. Donc, ce qui se passe est que la CPU met n'importe quelle valeur de 8 bits sur le bus de données lors de l'écriture, mais la puce VIC stocke seulement les 4 bits inférieurs; puis plus tard, lorsque la CPU essaie de lire à partir de cette adresse, elle met 53280 sur le bus d'adresse, et la puce VIC doit mettre tous les 8 bits sur le bus de données. Mais il a seulement stocké les 4 bits inférieurs; les 4 bits supérieurs devront être faussés comme 1.

Bien sûr, il pourrait également choisir d'autres fausses valeurs pour ces bits supplémentaires (par exemple, il pourrait utiliser tous les 0); le fait est qu'il doit s'agir d'une valeur fixe, puisque les 4 bits réels n'ont jamais été stockés nulle part.

+0

Merci. Pourtant, il doit y avoir une raison pour laquelle c'est «1» par conception et pas plus commodément «0» ... peut-être une optimisation du matériel, à moins que ce soit purement un choix de conception «aléatoire». – youri

+1

Je ne peux pas parler de nMOS, mais TTL lit généralement toute entrée non connectée comme une tension positive, ou un bit 1. C'était un artefact de la manière asymétrique dont les transistors étaient disposés en entrée. J'oublie les détails, mais une recherche rapide suggère que l'entrée TTL était soit «tirée vers le sol» (0) ou «non tirée vers le sol» (1) donc il va de soi que lorsque rien n'est connecté, la réponse par défaut est 1 peut également être que la réponse la plus efficace en énergie est 1). Il est possible que nMOS utilise un arrangement FET analogue ... mais je ne sais pas. – sh1