aboutsummaryrefslogtreecommitdiffstats
path: root/vgasrc/vgabios.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2024-04-01 13:44:58 -0400
committerKevin O'Connor <kevin@koconnor.net>2024-04-13 13:19:56 -0400
commit731c88d503ef07a06a03dd17a6e9163941b329da (patch)
treed5be203fa866356a69b9d6cad6fc69426fa9ece3 /vgasrc/vgabios.c
parentc5a361c09a19e3b1a83557b01f11f04b27181a11 (diff)
downloadseabios-731c88d503ef07a06a03dd17a6e9163941b329da.tar.gz
stdvgaio: Only read/write one color palette entry at a time
Introduce stdvga_dac_read_many() and stdvga_dac_write_many() for writing multiple dac palette entries. Convert the stdvga_dac_read() and stdvga_dac_write() low-level IO access functions in stdvgaio.c to access just one color palette entry. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'vgasrc/vgabios.c')
-rw-r--r--vgasrc/vgabios.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/vgasrc/vgabios.c b/vgasrc/vgabios.c
index 3659f01e..44fb26c2 100644
--- a/vgasrc/vgabios.c
+++ b/vgasrc/vgabios.c
@@ -567,17 +567,18 @@ handle_101009(struct bregs *regs)
stdvga_get_all_palette_reg(regs->es, (u8*)(regs->dx + 0));
}
-static void noinline
+static void
handle_101010(struct bregs *regs)
{
- u8 rgb[3] = {regs->dh, regs->ch, regs->cl};
- stdvga_dac_write(GET_SEG(SS), rgb, regs->bx, 1);
+ struct vbe_palette_entry rgb = {
+ .red=regs->dh, .green=regs->ch, .blue=regs->cl };
+ stdvga_dac_write(regs->bx, rgb);
}
static void
handle_101012(struct bregs *regs)
{
- stdvga_dac_write(regs->es, (u8*)(regs->dx + 0), regs->bx, regs->cx);
+ stdvga_dac_write_many(regs->es, (u8*)(regs->dx + 0), regs->bx, regs->cx);
}
static void
@@ -589,20 +590,19 @@ handle_101013(struct bregs *regs)
stdvga_set_palette_page(regs->bh);
}
-static void noinline
+static void
handle_101015(struct bregs *regs)
{
- u8 rgb[3];
- stdvga_dac_read(GET_SEG(SS), rgb, regs->bx, 1);
- regs->dh = rgb[0];
- regs->ch = rgb[1];
- regs->cl = rgb[2];
+ struct vbe_palette_entry rgb = stdvga_dac_read(regs->bx);
+ regs->dh = rgb.red;
+ regs->ch = rgb.green;
+ regs->cl = rgb.blue;
}
static void
handle_101017(struct bregs *regs)
{
- stdvga_dac_read(regs->es, (u8*)(regs->dx + 0), regs->bx, regs->cx);
+ stdvga_dac_read_many(regs->es, (u8*)(regs->dx + 0), regs->bx, regs->cx);
}
static void