aboutsummaryrefslogtreecommitdiff
path: root/vgasrc/vbe.c
diff options
context:
space:
mode:
Diffstat (limited to 'vgasrc/vbe.c')
-rw-r--r--vgasrc/vbe.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c
index d2aaace..2ae0a98 100644
--- a/vgasrc/vbe.c
+++ b/vgasrc/vbe.c
@@ -403,26 +403,20 @@ vbe_104f09(struct bregs *regs)
if (start + count > max_colors)
goto fail;
u16 seg = regs->es;
- u8 *data_far = (void*)(regs->di+0);
- u8 rgb[3];
+ struct vbe_palette_entry *data_far = (void*)(regs->di+0);
int i;
switch (regs->bl) {
case 0x80:
case 0x00:
for (i = 0; i < count; i++) {
- rgb[0] = GET_FARVAR(seg, data_far[i*4 + 2]);
- rgb[1] = GET_FARVAR(seg, data_far[i*4 + 1]);
- rgb[2] = GET_FARVAR(seg, data_far[i*4 + 0]);
- stdvga_dac_write(GET_SEG(SS), rgb, start + i, 1);
+ struct vbe_palette_entry rgb = GET_FARVAR(seg, data_far[i]);
+ stdvga_dac_write(start + i, rgb);
}
break;
case 0x01:
for (i = 0; i < count; i++) {
- stdvga_dac_read(GET_SEG(SS), rgb, start + i, 1);
- SET_FARVAR(seg, data_far[i*4 + 0], rgb[2]);
- SET_FARVAR(seg, data_far[i*4 + 1], rgb[1]);
- SET_FARVAR(seg, data_far[i*4 + 2], rgb[0]);
- SET_FARVAR(seg, data_far[i*4 + 3], 0);
+ struct vbe_palette_entry rgb = stdvga_dac_read(start + i);
+ SET_FARVAR(seg, data_far[i], rgb);
}
break;
default: