Главная »
Z80 » Скроллинг экрана на 1 знакоместо вверх
§ Описание алгоритма
Это — далеко не самый оптимальный алгоритм, но с его помощью экран скроллится красиво. Вообще суть этого алгоритма в том, чтобы пройти слева направо, сверху вниз по всем знакоместам и поднять их наверх, то есть, как бы это было, если бы это был скроллер экрана, который реализован в текстовом режиме для x86 процессоров, ну или VGA адаптеров, если так можно сказать.
§ Код скроллера
1scroll: push hl
2 push de
3 push bc
4 push af
5
6
7 ld hl, $4000
8 ld de, $4020
9 ld a, 3
10 ld c, 0
11.n3: push af
12.n2: ld b, 8
13 push de
14 push hl
15.n1: ld a, (de)
16 ld (hl), a
17 inc h
18 inc d
19 djnz .n1
20 pop hl
21 pop de
22 inc hl
23 inc de
24 ld a, e
25 and a
26 jr nz, .x1
27 ld a, d
28 add 7
29 ld d, a
30.x1: dec c
31 jr nz, .n2
32 ld a, h
33 add 7
34 ld h, a
35 pop af
36 cp 2
37 jr nz, .x2
38 ld c, $e0
39.x2: dec a
40 jr nz, .n3
41
42
43 xor a
44 ld h, $50
45 ld c, $08
46.m2: ld l, $e0
47 ld b, $20
48.m1: ld (hl), a
49 inc hl
50 djnz .m1
51 dec c
52 jr nz, .m2
53
54
55 ld bc, 768-32
56 ld e, $20
57.m3: ex de, hl
58 ldir
59 ex de, hl
60
61
62 ld b, $20
63 ld a, (PTR_COLOR_DEF)
64.m4: ld (hl), a
65 inc hl
66 djnz .m4
67
68 pop af
69 pop bc
70 pop de
71 pop hl
72 ret