The Doc wrote:but why do i have to restore the font even if i haven't been in 320x200-mode? i'm booting in cga-mode an then i'm switching to 3h... now i can see the cursor, but there's still no text.
That's what I meant with drawing spaces. The video card has four planes of memory. All four planes are drawn to the screen in a graphics mode, so you will most likely have changed them to get sensible output.
In text mode, each plane serves a specific purpose. planes one and two contain the characters and their attributes, plane 3 contains the font and plane 4 is unused. For each character on the screen, the VGA looks up the 32 bytes corresponding to that character in plane 2, and then emits the foreground for each set bit, and background for each cleared bit. Since you have put something to the screen in graphics mode, plane 2 will contain byte values corresponding to colors, rather than bitfields corresponding to characters. Hence if you cleared the screen before the switch plane 2 will contain only zeroes, and you'll get only the background color when you reuse it in text mode.
To set the font, you'll have to set up at least part of the vga to a planar graphics mode (ega or mode-x), write the bitmap to plane 2, then restore it back to text mode.
Code to do this has been posted very recently on this forum - I honestly think that you should spend more time looking for an answer as I have learned pretty much everything said here from somewhere else too.
http://www.osdev.org/phpBB2/viewtopic.php?t=16594
Try again writing white-on-blue text. If you only see the blue background then you know it's a font problem, otherwise you may have messed up something like the DAC or 16-color palette.