1	SECTION	code_driver
2
3	PUBLIC	asm_switch_data
4
5	GLOBAL	copy_vram
6	GLOBAL	y_table
7
8
9asm_switch_data:
10        PUSH    DE              ; Save src
11        PUSH    HL              ; Save dst
12        LD      L,B
13        SLA     L
14        SLA     L
15        SLA     L
16        LD      H,0x00
17        ADD     HL,HL
18        LD      D,H
19        LD      E,L
20
21        LD      HL,y_table
22        SLA     C
23        SLA     C
24        SLA     C
25        LD      B,0x00
26        ADD     HL,BC
27        ADD     HL,BC
28        LD      B,(HL)
29        INC     HL
30        LD      H,(HL)
31        LD      L,B
32        ADD     HL,DE
33
34        LD      B,H             ; BC = src
35        LD      C,L
36        POP     HL              ; HL = dst
37        PUSH    BC              ; Save dst
38        LD      A,H
39        OR      L
40        JR      Z,switch_1
41        LD      DE,0x10
42        CALL    copy_vram
43switch_1:
44        POP     HL              ; HL = dst
45        POP     BC              ; BC = src
46        LD      DE,0x10
47        CALL    copy_vram
48        RET
49