Sourcecode Fortschritt


  • Mod

    0.0.1.213 - Rev: 795

    va_end(ap); eingebaut

    #define _MEMLEAK_FIND_ macht Probleme bei VBox und VMWare, indirekt auch beim PC, also nur auf qemu einsetzen.

    Problem muss bei writeInfo(...) liegen, denn auskommentiert läuft VBox.


  • Mod

    0.0.1.214 - Rev: 796

    #define _MEMLEAK_FIND_

    Problem, das zum Absturz bei VMWare und VBox führt, gefunden:

    #ifndef OS_H
    #define OS_H
    
    #include "types.h"
    
    // These switches change the behavior of PrettyOS, useful for analyzing tasks:
    
    /// #define _DIAGNOSIS_         // Diagnosis-Output - activates prints to the screen about some details and memory use
    /// #define _MALLOC_FREE_       // shows information about malloc/free and heap expansion
    #define _MEMLEAK_FIND_      // Provides a counter of all (successful) malloc and free calls showing memory leaks
    /// #define _USB_DIAGNOSIS_     // only as transition state during implementation of USB 2.0 transfers
    /// #define _FAT_DIAGNOSIS_     // only as transition state during implementation of FAT 12/16/32
    /// #define _DEVMGR_DIAGNOSIS_  // e.g. sectorRead, sectorWrite
    /// #define _TASKING_DIAGNOSIS_ // Provides output about tasking and scheduler
    /// #define _FLOPPY_DIAGNOSIS_  // Provides information about the floppy(-motor)
    /// #define _VM_DIAGNOSIS_      // Provides information about the vm86 task, but critical
    /// #define _SOUND_             // This is no sound, only "beep". Better stop it! ^^
    #define _PCI_VEND_PROD_LIST_ // http://www.pcidatabase.com/pci_c_header.php
    
    void writeInfo(uint8_t line, char* args, ...)
    {
        va_list ap;
        va_start(ap, args);
        vsnprintf(infoBar[line], 81, args, ap);
        va_end(ap); 
        // refreshUserScreen(); // HACK <--- leads to massive error in VBox and VMWare
    }
    

    Nun ist der schwarze Peter bei refreshUserScreen() 😉

    void refreshUserScreen()
    {
        // Printing titlebar
        kprintf("PrettyOS [Version %s]                                                            ", 0, 0x0C, version);
    
        if (displayedConsole == KERNELCONSOLE_ID)
        {
            cursor.x = COLUMNS - 5;
            kputs("Shell");
        }
        else
        {
            char Buffer[70];
            snprintf(Buffer, 70, "Console %u: %s", displayedConsole, reachableConsoles[displayedConsole]->name);
            cursor.x = COLUMNS - strlen(Buffer);
            cursor.y = 0;
            kputs(Buffer);
        }
        kprintf("--------------------------------------------------------------------------------", 1, 7); // Separation
        if(reachableConsoles[displayedConsole]->showInfobar)
        {
            // copying content of visible console to the video-ram
            memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * (USER_LINES-4) * 2);
            memsetw(vidmem + (USER_BEGIN + USER_LINES - 3) * COLUMNS, 0, 3 * COLUMNS); // Clearing info-area
            kprintf("--------------------------------------------------------------------------------", 44, 7); // Separation
            kprintf(infoBar[0], 45, 14);
            kprintf(infoBar[1], 46, 14);
            kprintf(infoBar[2], 47, 14);
        }
        else
        {
            // copying content of visible console to the video-ram
            memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * USER_LINES*2);
        }
        kprintf("--------------------------------------------------------------------------------", 48, 7); // Separation
    
        cursor.y = reachableConsoles[displayedConsole]->cursor.y;
        cursor.x = reachableConsoles[displayedConsole]->cursor.x;
        update_cursor();
    }
    

  • Mod

    0.0.1.215 - Rev: 797

    noch einige va_end(ap); eingebaut (irgendwas übersieht man immer)



  • Version 0.0.1.216:

    - Mauszeiger (heller Punkt) in VBE angezeigt
    - min und max zu Makros umgewandelt - Damit sie bei signed und unsigned wirken
    - Bugfix in video.c vervollständigt - Infobar wird wieder aktualisiert, _MEMLEAK_FIND_ funktioniert aber weiterhin
    - va_end in console.c ergänzt
    - vbe.h/c aufgeräumt


  • Mod

    0.0.1.217 - Rev: 799

    init logging



  • version 0.0.1.218 - Rev: 800

    vbe.c/.h
    - Neue Funktionen vbe_drawRectFilled(...), vbe_drawBitmapTransparent(...) und keine Funktioniert...

    mouse.c/.h
    - Cursor Bitmap hinzugefügt...

    data.asm
    - cursor Bitmap hinzugefügt

    user/vm86/cursor.bmp hinzugefügt



  • Version 0.0.1.219:

    - Fehler in TTT behoben: Es wird nichtmehr akzeptiert, wenn nichts eingegeben wurde.
    - INIT-Log-Ausgabe nicht mehr gebremst
    - makefiles für Userspace angepasst/verbessert (Compilerschalter)
    - Kleinere Verbesserungen und aufgeräumt (insbesondere keyboard.c)



  • version 0.0.1.220 - Rev: 802

    vbe.c/h
    - vbe_drawBitmap(...), mit 64k Farbtiefe experimentiert

    vidswtch.asm
    - neue Bildschirmauflösung mit 64k Farbtiefe hinzugefügt.



  • version 0.0.1.221 - Rev: 803

    vbe.c/h
    - Mode mit 32 Bit Farbtiefe hinzugefügt

    vidswtch.asm
    - Neue Bildschirmauflösung mit 32 Bit Farbtiefe hinzugefügt



  • (nach 804 von tev)

    Revision 805

    mov ss,ax und xor sp,sp sollte man nicht einfach vertauschen, da so ein Interrupt losgehen kann, der einen eventuell nicht nutzbaren Stack benutzt (Bootloader-Stage1).



  • Entschuldigung, dass ich das nicht vorher gemacht habe, da ich das mit dem Forum nicht wusste.

    Ok ich hatte mit Revision 804 Geschwindigkeitsoptimierungen im Bootloader gemacht.


  • Mod

    0.0.1.222 - Rev: 806

    paging.h/c: formale Änderungen (camelCase)
    task.c: paging_destroyUserPageDirectory(task->page_directory) verwendet zur Memory-Freigabe als Gegenstück zu paging_createUserPageDirectory() in elf.c

    beep (nicht sound) ausgeschaltet


  • Mod

    0.0.1.223 - Rev: 807

    Formale Änderungen (camelCase entsprechend Style Guide)



  • Version 0.0.1.224:

    - Keine Floppy-IRQ-Timeouts mehr beim boot -> bootet schneller
    - Trackweises Lesen von Floppy
    -- BUG: Strg+s geht nicht mehr.
    - Aufgeräumt



  • Version 0.0.1.225:

    - VBE-Modeliste "entdrosselt": Alle Modi werden angezeigt, keine Begrenzung auf 16 mehr
    - flpydsk.c: calibrate und seek verbessert
    - Floppy-Motor-Bug behoben, der Motor wird wieder abgeschaltet (Bug durch Caching entstanden)
    - Testliste erweitert


  • Mod

    Strg+s geht nicht mehr

    TIPP:
    Wer dies verwenden möchte, nach Angaben von MrX in flpydsk.c folgende Änderungen temporär vornehmen:

    1. Zeile 616 auskommentieren
    2. Zeile 624 auskommentieren, Zeile 625 aktivieren
    3. Zeile 654 auskommentieren, Zeile 655 aktivieren
    // if(CurrentDrive->lastTrack != sector/18)
    //...
    // retVal = flpydsk_read(CurrentDrive->lastTrack*18); 
    retVal = flpydsk_read(sector); 
    //...
    // memcpy(destBuffer, CurrentDrive->trackBuffer + 512*(sector%18), 512); 
    memcpy(destBuffer, CurrentDrive->trackBuffer, 512);
    

    Dann wird der Lesevorgang von Floppy allerdings nicht beschleunigt.

    Der aktuelle Code zerstört mittels strg+s FAT2 und die ersten drei Sektoren im Data-Bereich, und er vermehrfacht die Einträge in der Root Dir. 🙄



  • Version 0.0.1.226:

    - Bugfix: Floppy-Schreiben geht wieder (siehe auch Fehler-Thread)
    - Bugfix: Falscher Schrägstrich (\) in Pfadangabe ersetzt


  • Mod

    0.0.1.227 - Rev: 811

    _DEVMGR_DIAGNOSIS_ und _READCACHE_DIAGNOSIS_ getrennt
    Fehler behoben
    beep aus!



  • Version 0.0.1.228:

    - Verbesserungen in VBE:
    -- Anzeige in 32-bit-Modus nun funktionsfähig, kein Pixelsalat mehr, korrekte Farben. In 16/15-bit sind die Farben noch falsch.
    -- "Transparentes" Bitmap nun auch transparent
    -- Code vereinfacht&verbessert
    - Weitere kleine Verbesserungen
    - Weitere Testergebnisse



  • Version 0.0.1.229:

    - Verbesserungen bei VBE-Modeerkennung:
    -- Farbtiefe jetzt in Bits angegeben
    -- Die Eigenschaften der Modi werden jetzt von der Grafikkarte abgefragt
    -- Assembler-Code verallgemeinert - Funktioniert mit allen Modi
    - vidswtch.asm wird wieder -Ox assembliert
    - Kleinigkeiten


Anmelden zum Antworten