Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
cursos:ensamblador:paginacion_128k [19-01-2024 08:12] – sromero | cursos: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) | ld a, ($5b5c) | ||
- | and $f8 | + | and %11111000 |
- | or 4 ; Seleccionar banco 4 | + | or %00000100 |
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) | ld a, ($5b5c) | ||
- | and $f8 | + | and %11111000 |
or b ; Seleccionar banco " | or b ; Seleccionar banco " | ||
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 | + | ld hl, $c000 |
- | ; Ahora paginamos el banco 0 sobre 0xc000 | + | ; Ahora paginamos el banco 0 sobre $c000 y guardamos un valor |
- | ; en el primer byte de sus 16K (en la direccion | + | ; en el primer byte de sus 16K (en la direccion |
ld b, 0 | ld b, 0 | ||
call SetRAMBank | call SetRAMBank | ||
- | ld a, 0xAA | + | ld a, $AA |
- | ld (hl), a ; (0xc000) = 0xAA | + | ld (hl), a ; ($c000) = $AA |
- | ; Ahora paginamos el banco 1 sobre 0xc000 | + | ; Ahora paginamos el banco 1 sobre $c000 y guardamos un valor |
- | ; en el primer byte de sus 16K (en la direccion | + | ; en el primer byte de sus 16K (en la direccion |
ld b, 1 | ld b, 1 | ||
call SetRAMBank | call SetRAMBank | ||
- | 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 | + | ; hay en $c000 y lo representamos en pantalla. Recordemos que |
- | ; acabamos de escribir | + | ; acabamos de escribir |
- | ; y que en su momento pusimos | + | ; y que en su momento pusimos |
ld b, 0 | ld b, 0 | ||
call SetRAMBank | call SetRAMBank | ||
- | ld a, (hl) ; Leemos (0xc000) | + | ld a, (hl) ; Leemos ($c000) |
call ClearScreen | call ClearScreen | ||
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 | + | ; 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 A antes de cambiar de banco, y que en su |
- | ; momento pusimos | + | ; momento pusimos |
ld b, 1 | ld b, 1 | ||
call SetRAMBank | call SetRAMBank | ||
- | ld a, (hl) ; Leemos (0xc000) | + | ld a, (hl) ; Leemos ($c000) |
call ClearScreen | call ClearScreen | ||
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) | ld a, ($5b5c) | ||
- | and $f8 | + | and %11111000 |
or b ; Elegir banco " | or b ; Elegir banco " | ||
- | ld bc, 0x7ffd | + | ld bc, $7ffd |
di | di | ||
ld ($5b5c), a | ld ($5b5c), a |