Sourcecode Fortschritt


  • Mod

    Rev. 319:

    - mouse.c: mouse print auf eine Zeile
    - scheduler.c (Beginn der Auslagerung des Dispatchers/Schedulers, separat von task.c)

    scheduler.h/c wurde versehentlich nicht committed. 🙄



  • Rev. 320:

    - Stylekorrekturen
    - makefile und build.bat auf FloppyImage.img umgestellt
    - scheduler.c/.h jetzt dabei


  • Mod

    Rev. 321:

    Code review:

    BL1, 
    BL2,
    ckernel:
        gdt_install();
        idt_install();       // cf. interrupts.asm
        timer_install(1000); // Sets system frequency to ... Hz
        keyboard_install();
        //...	
        syscall_install();
        fpu_install();
    

    next step: paging, heap, tasking, pci-scan, mouse, ehci, ...

    Thx to MrX, Cuervo, Tobiking, Iteem 👍



  • Revision 322:

    * Mausverbesserungen: Stabilisation, experimenteller Support für 5 Tasten (muss aktiviert werden, ist im Moment instabil und deswegen deaktiviert) und mouse_uninstall(), das sogar die Maus zurücksetzt.

    EDIT:

    * Des weiteren wurden einige Funktionen ausgelagert, z.B. die Funktion zum Setzen der Sample-Rate!



  • Revision 323:

    - makefile-Bug bezüglich Shell behoben
    - rebuild.bat hinzugefügt: führt target clean vorm Build aus



  • Revision 324:

    * Kleinere Optimierungen

    EDIT: Fehler, nicht-Windows nimmt jetzt i586-elf- gcc und binutils.. sry..


  • Mod

    Rev. 325:

    task.c überarbeitet (Code Review)


  • Mod

    Rev. 326:

    weitere Funktionen nach scheduler.c ausgelagert


  • Mod

    Rev. 327:

    Multithreading - erster Versuch.

    Klappt noch ncht komplett, aber Bootscreen erscheint schon als Thread. Nach Laden von TTT hängt jedoch noch was.


  • Mod

    Rev. 328:

    Jetzt geht es mit dem ersten Multithreading. 😕



  • Revision 329:

    - build.sh auf FloppyImage.img umgestellt (In Ermangelung von Linux kann ich dennoch nicht beurteilen, ob diese Datei funktioniert)
    - HELLO.ELF jetzt in version 0.5.7 (Zählweise geändert, Float-Test weg, Wartet am Ende auf Tastendruck)
    - Shell: testch nicht mehr genutzt
    - Float-Test im ckernel.c weg, #NM-Ausgabe in Diagnosis-Modus verlegt
    - "Aufräumarbeiten"


  • Mod

    Rev. 330:

    Zwischenschritt: read/write-Sperre by Floppy Disk Transfer (noch nicht sicher)
    in oda, os.h:

    bool flpy_ReadWriteFlag[4];  // 0: ready      1: busy (blocked)
    


  • Revision 331:

    - DIAGNOSIS-Modus repariert
    - Vergabe von Konsolen nicht mehr vom Namen der Konsole abhängig, sondern vom Aufruf von create_ctask oder create_task (analog auch bei threads) -> Nun wird der String in elf_exec geprüft. (Schiebt das Problem eine Ebene höher)
    - HELLO.ELF grundlegend überarbeitet: Bemängelte Probleme behoben
    - makefile: Unterscheidung zwischen WINDOWS, MACOSX und anderen. (Cuervo: Bitte testen)
    - Altlasten aus der Shell entfernt
    - Aufräumarbeiten (Formatierungen)



  • Revision 332:

    * Verbesserung des Makefiles (MrX hat einen Fehler gemacht, gcc wurde 2x gesetzt und somit das Auswahlverfahren umgangen)

    Ansonsten war das Makefile wirklich gut^^


  • Mod

    Rev. 333:

    kleine Änderungen


  • Mod

    Rev. 334:

    task.c: address of exit at top of stack in create_thread (avoids exit in body of functions)



  • Revision 335:

    - "typedef-structs" in os.h eingesetzt
    - start.asm von Altlasten befreit
    - Screenshot nun auf Knopfdruck (Ctrl+s)
    - Pointer-Typ-Änderungen (BT 2982518)


  • Mod

    Revision 336:

    - ehci.c: Port-Info (Infobereich) korrigiert
    - keyboard.c: Ausgabe von 's' unterdrückt bei Strg+s (screenshot)
    - file.c: Textausgabe (Info) beim Abspeichern verbessert

    Simulation mit Qemu:

    <Floppy Disc Directory>                                                         
    PRETTYOS        0 byte           (vol)  1st sector: 31                          
    BOOT2.BIN       957 byte         (arc)  1st sector: 33                          
    KERNEL.BIN      79864 byte       (arc)  1st sector: 35                          
    HELLO.ELF       7791 byte        (arc)  1st sector: 191                         
    TIME4.TXT       4100 byte        (arc)  1st sector: 207
    

    TIME4.TXT:

    PrettyOS [Version 0.0.0.336]                                               Shell
    --------------------------------------------------------------------------------
    Mouse sent unknown package!                                                     
    Memory size: 128 MiB / 134 MB  (134217728 Bytes)                                
    #0  0:0.0        dev:1237h vend:8086h IRQ:0                                     
    #1  0:1.0        dev:7000h vend:8086h IRQ:0                                     
    #2  0:1.1        dev:7010h vend:8086h IRQ:0                                     
    #3  0:1.2        dev:24CDh vend:8086h IRQ:11  USB EHCI F0000000h MMIO sz:4096   
    
    >>> >>> function: analyzeEHCI                                                   
    HCIVERSION: 0100h HCSPARAMS: 00000004h Ports: 4                                 
    HCCPARAMS: 00000080h No ext. capabil.                                           
    OpRegs Address: F0000020h                                                       
    #4  0:1.3        dev:7113h vend:8086h IRQ:9                                     
    #5  0:2.0        dev:00B8h vend:1013h IRQ:0                                     
    #6  0:31.0       dev:8139h vend:10ECh IRQ:11                                    
    BaseAddressRTL8139_MMIO mapped to virtual address FFF00000h                     
    
    1.44 MB FDD device 0                                                            
    
    <RAM Disk at C0007000h DIR> dev                                                 
    35      info                                                                    
    12918   shell                                                                   
    
    >>> >>> function: initEHCIHostController                                        
    
    >>> >>> function: startHostController                                           
    reset HC                                                                        
    
    >>> >>> function: DeactivateLegacySupport                                       
    
    DeactivateLegacySupport: eecp = 0000h                                           
    No valid eecp found.                                                            
    
    HCHalted bit set to 0 (OK), ports can be enabled now.                           
    >>> >>> function: enablePorts                                                   
    
    >>> >>> function: resetPort 1                                                   
    
    $>                                                                              
    
    --------------------------------------------------------------------------------
        _______                _______      <>_<>                                   
       (_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.                               
      `-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'                              
    --------------------------------------------------------------------------------
    Friday, April 09, 2010, ........   3 s runtime. CPU: 7289 MHz                  /
    

    TODO:
    @Cuervo: Dieses "Mouse sent unknown package!" könnte man vielleicht noch untersuchen oder unterdrücken. Sieht unschön aus. 😉


  • Mod

    Es ist mir nicht gelungen, das screenshot in keyboard.c auf thread umzusetzen, weder mit noch ohne Konsole. Das Problem liegt vermutlich im Speicherbereich (#PF, manchmal auch #GPF oder Reboot je nach Versuchen).

    Denkbare Möglichkeiten:
    task.c: Konsole aufräumen (übrigens auch, wenn gar keine da ist, z.B. bei create_thread(...) ?? )
    file.c: Speicher-Handling beim File schreiben
    console.c: screenshot hat einen Parameter



  • Wir müssen "Mouse sent unknown package" nicht anzeigen, aber es tritt (theoretisch) nur auf, wenn die Maus wirklich einen Fehler macht.
    Das ganze funktioniert in etwa so:

    * Maus wird initialisiert
    * Mausverhalten wird eingestellt
    * Wenn möglich wird das Mausrad dazugeschaltet
    * IRQ 12 Handler wird installiert

    * Maus sendet 3 oder 4 Pakete auf einmal, jedes allerdings mit einem eigenen Interrupt
    * Wenn der Zähler noch bei 0 ist wird überprüft, ob das erste empfangene Paket wirklich das erste ist.
    (anscheinend fangen nicht alle Mäuse bei Paket 1 an. Das war auch der Fehler, den ich zuerst nicht gefunden habe)
    * Wenn das nicht das 1. Paket ist, wird diese Fehlermeldung angezeigt, wenn doch, wird der Zähler erhöht und auf das nächste Paket gewartet.

    d.h. Dieser Fehler tritt nur 1x am Anfang auf. Wenn er ständig auftritt (also nach jeder Maus-Statusausgabe), dann sendet die Maus 4 statt 3 oder 3 statt 4 Pakete, obwohl meine Initialisierung das ausschließen sollte. Aber bei Mäusen kann man nie wissen. Ausserdem tritt dieser 'Mouse sent unknown package' Fehler bei mir nur in Emulatoren auf, auf realen PCs hatte ich ihn nie...


Anmelden zum Antworten