Untitled
unknown
plain_text
2 years ago
984 B
8
Indexable
#define PLANE_SIZE (640 / 8) * 480
unsigned char *bitplane_r, *bitplane_g, *bitplane_b, *bitplane_i;
int InitBitplanes(void)
{
if ((bitplane_r = (unsigned char *) calloc(1, PLANE_SIZE)) == NULL) return(0);
if ((bitplane_g = (unsigned char *) calloc(1, PLANE_SIZE)) == NULL) return(0);
if ((bitplane_b = (unsigned char *) calloc(1, PLANE_SIZE)) == NULL) return(0);
if ((bitplane_i = (unsigned char *) calloc(1, PLANE_SIZE)) == NULL) return(0);
return(1);
}
void CopyBitplanes(void)
{
asm {
push ds
mov ax, 0xA000
mov es, ax
xor di, di
mov dx, VGA_ADD_REG
mov ax, 0x0102
out dx, ax
lds si, [bitplane_b]
mov cx, PLANE_SIZE
rep movsb
xor di, di
mov ax, 0x0202
out dx, ax
lds si, [bitplane_g]
mov cx, PLANE_SIZE
rep movsb
xor di, di
mov ax, 0x0402
out dx, ax
lds si, [bitplane_r]
mov cx, PLANE_SIZE
rep movsb
xor di, di
mov ax, 0x0802
out dx, ax
lds si, [bitplane_i]
mov cx, PLANE_SIZE
rep movsb
pop ds
}
}
Editor is loading...
Leave a Comment