Sourcecode Fortschritt


  • Mod

    0.0.1.84 - Rev: 653

    ... geht wieder!

    Umbau in vidswtch.asm hat geholfen

    Bochs (E0000000), Qemu (F2000000), VMWare (D0000000)

    VBox: klappt nicht mit Grafik (zeigt seltsamen phys base ptr)


  • Mod

    0.0.1.85 - Rev: 654

    0x100 in ckernel. c und comments bei waitFor...



  • Version 0.0.1.86:

    - Doku nach documentation gelegt, Syscalls.odt ergänzt, enthält die geplanten Syscalls
    - abs und sgn wie in vbe.c gewünscht nach util.c gelegt
    - strg+t-Problem behoben
    - Aufräumarbeiten (Codestyle)


  • Mod

    0.0.1.87 - Rev: 656

    scheduler/task-log überarbeitet

    Übersicht über Tasten-Kommandos:

    strg + t : Task-Übersicht
    strg + s : Screenshot auf Floppy
    strg + u : Screenshot auf USB-MSD
    ESC + h : Heap-Aufbau (Verwendung der Regions)


  • Mod

    0.0.1.88 - Rev. 657

    bitmap-darstellung etwas verbessert (Versuch)

    void bitmap()
    {
        uintptr_t bitmap_start = 0x2400 + sizeof(BitmapHeader_t);
        uintptr_t bitmap_end   = bitmap_start + 256*128; 
    
        uint32_t i = bitmap_end;
        for(uint32_t y=0;y<256;y++)
        {
            for(uint32_t x=0;x<128;x++)
            {
                SCREEN[ x + y * mib->XResolution * mib->BitsPerPixel/8 ] = *(uint8_t*)(i * mib->BitsPerPixel/8 + bitmap_start); 
                i--;
            }
        }    
    }
    

  • Mod

    0.0.1.89 - Rev: 658

    ein anfang 😃


  • Mod

    0.0.1.90 - Rev: 659

    - bitmap schon besser sichtbar
    - bitmap() mit variablen

    Unser erstes "Bitmap" (320*200, 256 Farben) mit PrettyOS soll hier mal festgehalten werden:
    http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_90_bitmap.PNG 😃



  • Wenn auch weniger sichtbar, auch der Scheduler hat zuletzt große Fortschritte gemacht 😉

    Version 0.0.1.91:

    - waitForTask eingebaut
    - waitForKeyStrokes durch waitForTasks ersetzt -> wesentlich weniger Keystrokes nötig
    - Syscalls.odt aktualisiert
    - Kleinigkeiten


  • Mod

    Version 0.0.1.92 - Rev. 661

    VgaInfoBlock_t überarbeitet
    http://www.delorie.com/djgpp/doc/ug/graphics/vesa.html


  • Mod

    Version 0.0.1.93 - Rev. 662

    Zwischen schritt:
    Beim ersten Durchlauf zum Holen der vga- und mib-Daten Einstieg ohne switchToVideo.

    läuft damit wieder auf VBox, Bochs, Qemu

    Man sieht den mapping Vorgang.

    Problem: Bild noch versetzt, Palette falsch.

    RealPC:
    <Cuervo> hab 3 getestet, einer kommt bis zur Shell, einer startet direkt neu und einer macht in einer Endlosschleife invalid opcode


  • Mod

    Version 0.0.1.94 - Rev. 663

    ablauf in vidswtch.asm:

    1. vga, mib
      (video ram mappen)
    2. switch

    Nun wird das Bild auch auf realPC angezeigt (phys. base ptr: B000000 wird mit 256 MB nach virtuell E0000000-F0000000 gemappt)



  • Version 0.0.1.95:

    - Syscalls umsortiert. Sämtliche Syscalls haben neue Nummern. Das erfordert, das alle Userprogramme neukompiliert werden. Das wurde in dieser Revision für alle Beiliegenden getan.
    - Syscall.h/.c aufgeräumt, DEFN_SYSCALL und DECL_SYSCALL haben sich als überflüssig herausgestellt -> Entfernt, da unnützer Wartungsaufwand. (Relikt aus dem Tutorial von JM, der den Header aus dem kernel wohl auch im userspace includieren wollte.)
    - Syscalls für Dateizugriff angelegt, sollte funktionieren. Die file_t-Struktur ist allerdings noch nicht (vollständig) implementiert, deren Member können aus dem Userspace nicht genutzt werden



  • version 0.0.1.96 - Rev: 665

    - SCREEN mit der vermutlich fehlenden Farbpalette (im moment 256 Farben) gerade gerückt.
    - Bitmap funktion um positionierung erweitert


  • Mod

    version 0.0.1.97

    Zwischenstand zum Experimentieren mit den Paletten in SCREEN und BMP


  • Mod

    0.0.1.98 - Rev: 667

    Bitmap wird wieder angezeigt.

    Folgender Code in bitmap(...) ist extrem kritisch und wurde daher nach einigen erfolglosen Versuchen auskommentiert:

    if(mib->BitsPerPixel == 8)
        {        
    
            BMPInfo_t* bmpinfo = (void*)0x2400;
    
            for(uint8_t j=0; j<256; j++)
            {
               ScreenPal[j].red    = (bmpinfo->bmicolors[j].red)   >> 6;
               ScreenPal[j].green  = (bmpinfo->bmicolors[j].green) >> 6;
               ScreenPal[j].blue   = (bmpinfo->bmicolors[j].blue)  >> 6;
            }
            waitForTask(create_vm86_task(VM86_SETPALETTE));  // OK  
        }
    

    waitForTask(create_vm86_task(VM86_SETPALETTE)); <--- unkritisch

    Vielen Dank übrigens an MrX für die Schaffung der Funktion waitForTask! 👍


  • Mod

    0.0.1.99 - Rev: 668

    Unglaublich, aber mit 255 anstelle 256 geht es.
    Keine Ahnung, was da genau passiert.

    Die Palette verändert sich übrigens nicht durch die durchgeführte Aktion. 🙄

    Falls jemand weiß wie man die beiden Paletten abgleicht, bitte um Nachhilfe oder Link. Ansonsten empfiehlt es sich wohl, auf höhere Farbenauflösungen umzusteigen und die 256-Farben-Welt zu verlassen. 😉


  • Mod

    Rev. 0.0.1.100:

    - setPalette an Funktion 4F08h angepasst (Seite 53 vbe3 spec)
    - Komprimierung auf 6:6:6 eingestellt

    typedef struct
    {
        uint8_t blue        : 6;
        uint8_t green       : 6;
        uint8_t red         : 6;
        uint8_t reserve     : 6;
    } __attribute__((packed)) RGBQuadPacked_t;
    

    klappt aber noch nicht

    auch nach Korrektur
    mov bx, 6

    in vidstwch.asm, zeile 89 gehts auch nicht

    mein Fazit: weg mit diesem Paletten Blödsinn, hin zu 24 bit colors! 😃



  • version 0.0.1.101 - Rev: 670

    - get/set VgaInfoBlock/ModeInfoBlock abgeändert


  • Mod

    version 0.0.1.102 - Rev: 671:

    SetDacPalette:
    	mov ax, 0x4F08
    	mov bl, 0
        mov bx, 6											
        int 10h
     	jmp exitvm86
    
    GetDacPalette:
    	mov ax, 0x4F08
    	mov bl, 1
        int 10h
     	jmp exitvm86
    
    SetPalette:
    	mov ax, 0x4F09      ;        Set/Get DAC Palette Format
    	mov bl, 0			;=00h    Set palette data
    	mov bx, 6			; ??								
        mov cx, 0xFF
    	xor dx, dx
    	xor ax, ax
    	mov es, ax
    	mov di, 0x1500
    	int 10h
        jmp exitvm86
    


  • version 0.0.1.103 - Rev: 672

    - set/getDACPalette funktionen definiert.
    - setPalette(RGBQuadPacked_t* RGB); Funktion.
    - getPalette() in ckernel.c eingefügt, liefert noch 0 werte.
    - setPalette(ScreenPal); in bitmap(); erstmal wieder auskommentiert.


Anmelden zum Antworten