.386p locals code32 segment para public use32 assume cs:code32, ds:code32 clear_buffer proc mov edi, frame_buffer xor eax, eax mov ecx, 64000/4 cld rep stosd ret endp copy_buffer proc mov esi, frame_buffer mov edi, _a0000h mov ecx, 64000/4 cld rep movsd ret endp retrace proc mov edx, 03dah @@r1: in al, dx test al, 8 jz @@r1 @@r2: in al, dx test al, 8 jnz @@r2 ret endp ;------------------------------------------------------------ ; in: esi - offset to palette ; out: none ;------------------------------------------------------------ set_palette proc mov edx, 03c8h xor eax, eax out dx, al inc edx mov ecx, 768 cld rep outsb ret endp ;------------------------------------------------------------ ; in: edi - offset to palette ; out: none ;------------------------------------------------------------ get_palette proc mov edx, 03c7h xor eax, eax out dx, al add edx, 2 mov ecx, 768 cld rep insb ret endp _a0000h dd ? frame_buffer dd ? code32 ends