9
调色板内存
9.1 概述
调色板内存是一个 512 字节的读写区域,以 RGB565 格式(红色 5 位,绿色 6 位,蓝色 5 位)存储 256 种颜色。每个颜色条目为 16 位(2 字节),以小端序格式存储,即低字节在前,高字节在后。
由于数据总线为 8 位宽,Zeal Video Board 在写入低字节时进行锁存,仅在高字节写入时才完成 16 位更新。因此,必须始终先写入低字节,再写入高字节。以相反顺序写入字节将导致颜色数据错误。
在启动时(但不是复位时),调色板会预加载标准 VGA Mode 13h 256 色调色板,为索引颜色图形提供熟悉的基准:
9.2 写入调色板(Z80 示例)
假设我们有一个基于 Z80 的主机系统,视频 RAM 映射到地址 0x8000。调色板位于该空间内的偏移量 0xe00 处(即地址 0x8e00)。以下是如何向调色板内存写入新颜色的方法:
; 将 HL 设置为调色板基址(颜色 0 = 0x8e00)
ld hl, 0x8e00
; 将颜色 0xf4e1 写入调色板条目 0(RGB565,小端序)
ld (hl), 0xe1 ; 先写入低字节
inc hl
ld (hl), 0xf4 ; 然后写入高字节
或者,由于 Z80 是小端序,您也可以直接写入 16 位值:
ld hl, 0xf4e1
ld (0x8e00), hl ; 存储为 0xE1 (LSB),然后是 0xF4 (MSB)
重要提示:再次强调,Zeal Video Board 先锁存低字节,因此即使您直接写入字,也要确保低字节先于高字节到达总线。在 Z80 上使用
ld (word), hl将自动实现这一点。
9.3 交互式颜色选择器
使用下面的选择器选择一种颜色。RGB565 值将自动计算并显示。此格式用于 Zeal video board 的调色板。
0x0000