diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2024-04-01 13:44:58 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2024-04-13 13:19:56 -0400 |
commit | 731c88d503ef07a06a03dd17a6e9163941b329da (patch) | |
tree | d5be203fa866356a69b9d6cad6fc69426fa9ece3 /vgasrc/vgabios.c | |
parent | c5a361c09a19e3b1a83557b01f11f04b27181a11 (diff) | |
download | seabios-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.c | 22 |
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 |