Objetivos
        
    
    
    
        
Memória
    
    
        
            
                O 6502 possui um barramento de memória de 16-bits, o que permite o 
                endereçamento de 65.536 posições ou locais que vão da posição 0 até 65.535 ou 0x0000 a 0xFFFF em notação hexadecimal.
            
            
                A memória do 6502 armazena dados em formato Little-Endian, é paginada e pode ser divida em bancos de memória. Nesta parte
                do tutorial vamos discutir o que foi dito nesta introdução.
            
         
     
    
    
        
            
                Os dados armazenados pelo 6502 utilizam apenas o formato Little-endian(LE) que significa 
                que um valor tem seus bytes menos significativo é armazenado primeiro, 
                seguido de seu byte mais significativo. O que foi dito se refere apenas a valores 16-bits.          
            
            
                Para conhecimento, um outro formato utilizado para armazenar dados em memória por outros processadores 
                é o formato Big-endian(BE) que armazena os dados de forma oposta ao LE.           
            
            Ex 1: Big-endian
            0x1234
            Ex 2: Little-endian
            0x3412
            Onde:
            b: binário
0x, h: hexadecimal
            
                Abaixo, são mostrados os endereços 0x1234 e 0xBB0A no formato LE armazenados na memória do 6502:
            
            
                Tab. 1: Um local de memória contendo valores LE.
                
                
                
                    
                        | Endereço | 
                        00 | 
                        00 | 
                        01 | 
                        02 | 
                        03 | 
                        04 | 
                        05 | 
                        06 | 
                        07 | 
                        (...) | 
                    
                    
                        | 00__ | 
                        $34 | 
                        $12 | 
                        - | 
                        $0A | 
                        $BB | 
                        - | 
                        - | 
                        - | 
                        - | 
                        (...) | 
                    
                    
                        | 00__ | 
                        - | 
                        - | 
                        - | 
                        - | 
                        - | 
                        - | 
                        - | 
                        - | 
                        - | 
                        (...) | 
                    
                
            
         
     
    
    
    
        
            
                O espaço de memória endereçável do 6502 é dividido em 256 páginas contendo 256 bytes 
                cada página. 
                A tabela abaixo exemplifica a organização dessas páginas.           
            
            
                Tab. 4: Paginação da memória
                
                    
                        | Página | 
                        Início | 
                        Fim | 
                        Tamanho | 
                    
                
                
                    
                        | 0 | 
                        0x0000 | 
                        0x00FF | 
                        256 | 
                    
                    
                        | 1 | 
                        0x100 | 
                        0x1FF | 
                        256 | 
                    
                    
                        | … | 
                        … | 
                        … | 
                        … | 
                    
                    
                        | 255 | 
                        0xFF00 | 
                        0xFFFF | 
                        256 | 
                    
                
            
            
                Para a página 0, utilizando o modo de endereçamento 
                Zero Page , quando um endereço de memória de 16-bits 
                calculado é superior a 00FFh, por exemplo 0x100, o MSB do endereço é descartado e substituído para 00h 
                formando um endereço do tipo 00XXh.
            
            Onde:
            b: binário
0x, h, X: hexadecimal
            
                Ex:
                00FF + 04 = 0103 = 0003
            
            
                A página 1, utilizada como a pilha do 6502, possui o funcionamento circular semelhante. 
                Ver Pilha/Stack para entender o funcionamento da pilha e página 1.
            
         
     
    
    
        
            
                A memória do 6502 pode ser divida em pequenas partes. Essas partes são mapeadas com outros componentes do hardware para 
                leitura e escrita de dados por intermédio do processador. Tendo todas as partes definidas, temos o tão conhecido 
                mapeamento de memória. 
            
            
                Tab. 5: Exemplo real de mapeamento de memória
                
                    
                        | Endereço | 
                        Tamanho | 
                        Dispositivo | 
                    
                
                
                    
                        | $0000–$07FF | 
                        $0800 | 
                        Página Zero, Pilha e RAM | 
                    
                    
                        | $0800–$0FFF | 
                        $0800 | 
                        Espelho de $0000–$07FF | 
                    
                    
                        | $1000–$17FF | 
                        $0800 | 
                    
                    
                        | $1800–$1FFF | 
                        $0800 | 
                    
                    
                        | $2000–$2007 | 
                        $0008 | 
                        Registradores do processador de vídeo | 
                    
                    
                        | $2008–$3FFF | 
                        $1FF8 | 
                        Espelho de $2000-$2007 | 
                    
                    
                        | $4000–$4017 | 
                        $0018 | 
                        Registradores do processador de áudio e Entrada/Saída | 
                    
                    
                        | $4018–$401F | 
                        $0008 | 
                        - | 
                    
                    
                        | $4020–$FFFF | 
                        $BFE0 | 
                        Cartucho do Jogo, mapeadores de cartucho e vetor de interrupções | 
                    
                
            
            
                O uso, definição  do mapeamento é de total responsabilidade do hardware que utiliza o 6502 como processador principal. 
                O 6502 não possui nenhum mapeamento nativo além da página 1 destinada à pilha.
            
         
     
    
        Registrador mapeado em memória
        
     
    
        
            
                Uma forma de se comunicar ou trocar informações com periféricos ligados ao processador é via 
                registradores mapeados em memória, o 6502 não possui instrução de Input e Output que utilizam 
                portas para comunicação. Esses tipo de registrador possuem um endereço fixo em memória destinado 
                à leitura e escrita de dados. 
            
            
            
            
                O uso, definição de endereço e outras configurações  é de total responsabilidade
                do hardware que utiliza o 6502 como processador principal.
            
            
                Abaixo, alguns exemplos de dispositivos e outros processadores que podem utilizar 
                registradores mapeados em memória.
            
            Dispositivos
            
                - Mouse  
 
                - Teclado 
 
                - Áudio
 
                - Vídeo
 
            
            
                Como exemplo real de registradores mapeados em memória temos os registradores abaixo destinados a comunicação com
                processadores de áudio e vídeo.
            
            Registradores
            
                - $2000-2007 : Vídeo 
 
                - $4000-2017 : Áudio 
 
            
         
     
    
    
        
            
                Como o 6502 possui apenas 64K de memória endereçável, muitos hardwares utilizam um sistema de mapeamento 
                de bancos que têm como objetivo armazenar bancos trocáveis de tamanhos específicos em um local de memória
                para que seja possível executar programas maiores que 64K. 
            
            
                O uso, definição de endereço e outras configurações  é de total responsabilidade do 
                hardware que utiliza o 6502 como processador principal. O 6502 não possui nenhum 
                mapeamento de banco nativo.
            
            
                Ex:
                $8000-$BFFF: Banco 1
                $C000-$FFFF: Banco 0 (Fixo)
            
            
                Os programas maiores que 64K utilizam o banco 1 para troca de bancos de 8 KBytes de tamanho. 
                O número de banco e seus tamanhos podem variar de hardware.
            
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 12/03/2025 - revisão 3 - Remoção de tópico 'valores 16-bits; Melhorias pontuais
 
                - 11/09/2024 - revisão 2 - correção em descrição de armazenamento, tabelas LE e BE e adição de link Pagina Zero
 
                - 04/10/2023 - revisão 1 - adição de links, correção em layout, navegação e erros gramaticais
 
                - 28/04/2023 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.