Home | History | Annotate | Download | only in core
      1 #include <sys/io.h>
      2 #include <fs.h>
      3 #include <com32.h>
      4 
      5 #include "bios.h"
      6 #include "graphics.h"
      7 #include <syslinux/video.h>
      8 
      9 /*
     10  * Write a single character in AL to the console without
     11  * mangling any registers; handle video pages correctly.
     12  */
     13 __export void writechr(char data)
     14 {
     15 	com32sys_t ireg, oreg;
     16 
     17         memset(&ireg, 0, sizeof ireg);
     18         memset(&oreg, 0, sizeof oreg);
     19 	write_serial(data);	/* write to serial port if needed */
     20 
     21 	if (UsingVGA & 0x8)
     22 		syslinux_force_text_mode();
     23 
     24 	if (!(DisplayCon & 0x1))
     25 		return;
     26 
     27 	ireg.eax.b[0] = data;
     28 	ireg.eax.b[1] = 0xE;
     29 	ireg.ebx.b[0] = 0x07;	/* attribute */
     30 	ireg.ebx.b[1] = *(uint8_t *)BIOS_page; /* current page */
     31 	__intcall(0x10, &ireg, &oreg);
     32 }
     33 
     34 void pm_writechr(com32sys_t *regs)
     35 {
     36 	writechr(regs->eax.b[0]);
     37 }
     38