- char *destp = vga_base() + row * 80 * 2 + col * 2;
- smram_state_t old_state = smram_save_state();
-
- smram_aseg_set_state(SMRAM_ASEG_SMMCODE);
-
- while (*src)
- {
- *(destp++) = *(src++);
- *(destp++) = COLOR;
- }
-
- smram_restore_state(old_state);
-}
-
-void outlog()
-{
- int y, x;
- char *basep = vga_base();
-
- smram_state_t old_state = smram_save_state();
-
- smram_aseg_set_state(SMRAM_ASEG_SMMCODE);
-
- for (y = 0; y < 4; y++)
- for (x = 40; x < 80; x++)
- {
- basep[y*80*2+x*2] = ' ';
- basep[y*80*2+x*2+1] = 0x1F;
- }
-
- smram_restore_state(old_state);
-
- for (y = 0; y < 4; y++)
- strblit(logents[y], y, 40);
-}
-
-void dolog(char *s)
-{
- memmove(logents[0], logents[1], sizeof(logents[0])*3);
- strcpy(logents[3], s);
+ outl(0x844, 0x0);
+ outl(0x848, 0x0);
+ while (inb(0x64) & 0x1)
+ inb(0x60);
+ outb(0x60, 0xee); /* Cause an IRQ. */
+ while (inb(0x60) != 0xEE)
+ ;