cursos:ensamblador:paginacion_128k

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
cursos:ensamblador:paginacion_128k [19-01-2024 08:12] sromerocursos:ensamblador:paginacion_128k [19-01-2024 12:23] (actual) – [Ejemplo sencillo: alternando Bancos 0 y 1] sromero
Línea 68: Línea 68:
 <code z80> <code z80>
     ld a, ($5b5c)        ; Valor previo del puerto (variable del sistema)     ld a, ($5b5c)        ; Valor previo del puerto (variable del sistema)
-    and $f8              ; Cambia sólo los bits que debas cambiar +    and %11111000        ; Cambia sólo los bits que debas cambiar 
-    or 4                 ; Seleccionar banco 4+    or %00000100         ; Seleccionar banco 4
     ld bc, $7ffd         ; Colocamos en BC el puerto a     ld bc, $7ffd         ; Colocamos en BC el puerto a
     di                   ; Deshabilitamos las interrupciones     di                   ; Deshabilitamos las interrupciones
Línea 87: Línea 87:
 SetRAMBank: SetRAMBank:
     ld a, ($5b5c)      ; Valor previo del puerto (variable del sistema)     ld a, ($5b5c)      ; Valor previo del puerto (variable del sistema)
-    and $f8            ; Cambia sólo los bits que debas cambiar+    and %11111000      ; Cambia sólo los bits que debas cambiar
     or b               ; Seleccionar banco "B"     or b               ; Seleccionar banco "B"
     ld bc, $7ffd       ; Colocamos en BC el puerto a     ld bc, $7ffd       ; Colocamos en BC el puerto a
Línea 178: Línea 178:
     ex de, hl                       ; lo almacenamos en DE     ex de, hl                       ; lo almacenamos en DE
  
-    ld sp, 26000                    ; Pila fuera de 0xc000-0xffff+    ld sp, 26000                    ; Pila fuera de $c000-$ffff
  
     call Wait_For_No_Key     call Wait_For_No_Key
-    ld hl, 0xc000                   ; Nuestro puntero+    ld hl, $c000                    ; Nuestro puntero
  
-    ; Ahora paginamos el banco 0 sobre 0xc000 y guardamos un valor +    ; Ahora paginamos el banco 0 sobre $c000 y guardamos un valor 
-    ; en el primer byte de sus 16K (en la direccion 0xc000):+    ; en el primer byte de sus 16K (en la direccion $c000):
     ld b, 0     ld b, 0
     call SetRAMBank                 ; Banco 0     call SetRAMBank                 ; Banco 0
  
-    ld a, 0xAA +    ld a, $AA 
-    ld (hl), a                      ; (0xc000) = 0xAA+    ld (hl), a                      ; ($c000) = $AA
  
-    ; Ahora paginamos el banco 1 sobre 0xc000 y guardamos un valor +    ; Ahora paginamos el banco 1 sobre $c000 y guardamos un valor 
-    ; en el primer byte de sus 16K (en la direccion 0xc000):+    ; en el primer byte de sus 16K (en la direccion $c000):
     ld b, 1     ld b, 1
     call SetRAMBank                 ; Banco 1     call SetRAMBank                 ; Banco 1
  
-    ld a, 0x01 +    ld a, $01 
-    ld (hl), a                      ; (0xC000) = 0x01+    ld (hl), a                      ; ($C000) = $01
  
     ; Esperamos una pulsación de teclas antes de empezar:     ; Esperamos una pulsación de teclas antes de empezar:
Línea 203: Línea 203:
  
     ; Ahora vamos a cambiar de nuevo al banco 0, leemos el valor que     ; Ahora vamos a cambiar de nuevo al banco 0, leemos el valor que
-    ; hay en 0xc000 y lo representamos en pantalla. Recordemos que +    ; hay en $c000 y lo representamos en pantalla. Recordemos que 
-    ; acabamos de escribir 0x01 (00000001) antes de cambiar de banco, +    ; acabamos de escribir $01 (00000001) antes de cambiar de banco, 
-    ; y que en su momento pusimos 0xAA (unos y ceros alternados):+    ; y que en su momento pusimos $AA (unos y ceros alternados):
     ld b, 0     ld b, 0
     call SetRAMBank                 ; Banco 0     call SetRAMBank                 ; Banco 0
-    ld a, (hl)                      ; Leemos (0xc000)+    ld a, (hl)                      ; Leemos ($c000)
     call ClearScreen                ; Lo pintamos en pantalla     call ClearScreen                ; Lo pintamos en pantalla
  
Línea 215: Línea 215:
  
     ; Ahora vamos a cambiar de nuevo al banco 1, leemos el valor que     ; Ahora vamos a cambiar de nuevo al banco 1, leemos el valor que
-    ; hay en 0xc000 y lo representamos en pantalla. Recordemos que +    ; hay en $c000 y lo representamos en pantalla. Recordemos que 
-    ; acabamos de leer 0xA antes de cambiar de banco, y que en su +    ; acabamos de leer antes de cambiar de banco, y que en su 
-    ; momento pusimos 0x01:+    ; momento pusimos $01:
     ld b, 1     ld b, 1
     call SetRAMBank                 ; Banco 0     call SetRAMBank                 ; Banco 0
-    ld a, (hl)                      ; Leemos (0xc000)+    ld a, (hl)                      ; Leemos ($c000)
     call ClearScreen                ; Lo pintamos en pantalla     call ClearScreen                ; Lo pintamos en pantalla
  
Línea 231: Línea 231:
  
 ;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
-; SetRAMBank: Establece un banco de memoria sobre 0xc000 +; SetRAMBank: Establece un banco de memoria sobre $c000 
-; Entrada: B = banco (0-7) a paginar entre 0xc000-0xffff+; Entrada: B = banco (0-7) a paginar entre $c000-$ffff
 ;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
 SetRAMBank: SetRAMBank:
     ld a, ($5b5c)                  ; Valor anterior del puerto     ld a, ($5b5c)                  ; Valor anterior del puerto
-    and $f8                        ; Sólo cambiamos los bits necesarios+    and %11111000                  ; Sólo cambiamos los bits necesarios
     or b                           ; Elegir banco "B"     or b                           ; Elegir banco "B"
-    ld bc, 0x7ffd+    ld bc, $7ffd
     di     di
     ld ($5b5c), a     ld ($5b5c), a
  • cursos/ensamblador/paginacion_128k.1705651975.txt.gz
  • Última modificación: 19-01-2024 08:12
  • por sromero