core, bios: Move __syslinux_shuffler_size to assembly
[syslinux/sherbszt.git] / core / plaincon.c
blob66c259ebdb914fc38b7c0a3e0fc319d28f05f5bf
1 #include <sys/io.h>
2 #include <fs.h>
3 #include <com32.h>
5 #include "bios.h"
6 #include "graphics.h"
7 #include <syslinux/video.h>
9 /*
10 * Write a single character in AL to the console without
11 * mangling any registers; handle video pages correctly.
13 __export void writechr(char data)
15 com32sys_t ireg, oreg;
17 memset(&ireg, 0, sizeof ireg);
18 memset(&oreg, 0, sizeof oreg);
19 write_serial(data); /* write to serial port if needed */
21 if (UsingVGA & 0x8)
22 syslinux_force_text_mode();
24 if (!(DisplayCon & 0x1))
25 return;
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);
34 void pm_writechr(com32sys_t *regs)
36 writechr(regs->eax.b[0]);