Pixel output mit PrettyOS



  • Hi,

    ich habe mir den ersten Teil zu PrettyOS angeschaut und wollte nun einfach ein paar Pixel auf dem Bidlschirm malen.

    Ich hab den folgenden Code in die main() Funktion eingefügt.

    Wenn ich das von der Diskette boote, läuft alles bis zum OS und startet dann den PC neu... Was mach ich da falsch?

    So:

    int i;
        for(i=0;i<10000000;++i)
        {
            int j;
            for(j=0;j<1000000;++j)/*do nothing*/;
    
        asm("movb $0, %ah"); //                  ; Setze den Video-Modus
        asm("movb $0x13, %al"); //               ; auf Modus 13h
        asm("int $0x10");
    
    	unsigned short mk = 0;
    	while (mk < 100)
    	{
    		VGA[mk] = mk;
    		mk++;
    	}
    
        asm("movb $0, %ah"); //                  ; Setze den Video-Modus
        asm("movb $0x01, %al"); //               ; auf Modus 13h
        asm("int $0x10");
    


  • Im Protected-Mode wirst du wohl nicht auf die BIOS-Interrupts zurückgreifen können, da brauchen wir VM8086 für.. oder ein Zurückwechseln in den RM, aber das kann sehr kompliziert werden.



  • Hi,

    danke für die schnelle Antwort kann ich den Video Modus auch wechseln ohne auf die Bios Interupts zurückzugreifen?

    MfG
    Scarabol



  • Nein, das einzige, was du machen könntest wäre den Code in den Bootloader auszulagern (vor dem Wechsel in den PM), dann würden aber alle anderen Textausgaben nicht mehr funktionieren (im Kernel).



  • Theoretisch gibt es zwar ein protected mode Interface für Vesa, allerdings soll die Hardwareunterstützung dafür eher selten sein. Was du allerdings machen könntest, wäre im Bootloader schon den Modus wechseln, bevor in den Protected Mode geschaltet wird.



  • cool danke, scheint zu funktionieren jetzt brauch ich ja nur noch eine Funktion die mir den Text auf den Bildschirm als einzelne Pixel aufmalt...

    MfG
    Scarabol


  • Mod

    @Scarabol: Kannst Du bitte etwas ausführlicher darstellen, was bei dir funktioniert und dich erfreut? 😉


Anmelden zum Antworten