Sourcecode Fortschritt


  • Mod

    Rev. 543:

    fat.c: globaler error komplett eliminiert (code signifikant besser wartbar/lesbar)



  • Revision 544:

    - Codevereinfachungen in fat.c und time.c, diverse andere Kleinigkeiten



  • Revision 545:

    - fat.c: Optimierungen, kleine Korrekturen
    -- Switches ggf. durch if/else ersetzt
    -- fseek gibt nun FS_ERROR zurück
    - devicemanager.c
    -- getFilename analog zu getPartition
    -- execute heißt nun executeFile
    -- analyzeBootSector gibt nun FS_ERROR zurück
    - Syscall/util.c: systemControl(SYSTEM_CONTROL todo) weist das OS an, zu rebooten/runterzufahren (nicht implementiert); reboot entfernt
    - shell: Neues Kommando "reboot" - ruft systemControl auf


  • Mod

    Rev. 546:

    flipflop reset in init DMA entfernt, weil offenbar nicht notwendig beim slave (controller 1)


  • Mod

    Rev. 547: Experimentelle Variante (zum gemeinsamen Fehlersuchen)

    Schreibvorgang auf usb-Stick mit FAT12 (analog Diskette) funktioniert! 🙂

    usbWrite(...) funktioniert demnach.

    Mit FAT16 und FAT32 formatierten sticks geht es noch nicht (Grund liegt somit im Write-Bereich für FAT16/32 des fat-Moduls)! Also nicht probieren. ⚠
    (bei FAT32 bleibt er hängen beim Lesen, passiert also nichts. Bei FAT16 schreibt er screen.txt in die root dir. datei ist aber "beschädigt" (Windows) ).

    Wie stellt man einen FAT12 usb-Stick her?
    ➡ http://www.c-plusplus.net/forum/viewtopic-var-t-is-268632.html

    Wo wird für Strg+s das Laufwerk festgelegt?
    video.c, Zeile 249 ff.

    // FILE* file = fopen("1:/screen.txt", "a+"); // TEST to write to Floppy
       FILE* file = fopen("3:/screen.txt", "a+"); // TEST to write to usb-stick
    

    Evtl. LW-Nummer anpassen, falls stick z.B. auf 4 liegt. 😉
    Auf Floppy schreiben wurde momentan lahm gelegt und umgebogen, wie man sieht.

    EDIT: mit frisch formatierten FAT32 usb-sticks klappt es bereits! (liegt also daran, dass unsere FAT-Routine noch nicht in die nachfolgenden Cluster der root dir gelangt)


  • Mod

    Rev. 548:

    ckernel.c: floppymotor aus, nur, wenn die erste floppy da ist (cmos-abfrage)
    fat.c: bei FAT32 fileptr->volume->FatRootDirCluster eingebaut anstelle "0" (wie bei FAT12 u. FAT16)

    Offene Probleme:
    FAT16-stick: rootdir entry ok, filesize ok, datei "beschädigt"
    FAT32-stick: bei hoher Nummer des entry in der root dir: leere Datei, filesize == 0


  • Mod

    Rev. 549:

    FAT16 Problem wurde gelöst, wurde versehentlich 0x0FF8 (FAT12-Konstante) eingetragen anstelle LAST_CLUSTER_FAT16 in fileCreateHeadCluster


  • Mod

    Rev. 550:

    fat.c: bug (bhandle in FindEmptyEntries war 16 bit) entfernt und kleine Optimierungen
    Leider immer noch das Problem bei FAT32 mit dem screenshot, wenn bereits viele Einträge vorhanden sind: File bleibt bei size 0.


  • Mod

    Rev. 551:

    Code-Optimierung usb2_msd.c (statische Check-Funktion ausgelagert und doppelt genutzt)



  • Revision 552:

    - pciDev_Array auf Heap gelegt
    - pciDev_Array nur noch in pci.c genutzt
    - Motorsteuerung jetzt "fertig"
    - Projektmappe etwas umsortiert
    - Kleinigkeiten


  • Mod

    Rev. 553: FAT32 bug gefunden, Schreiben funktioniert nun auch bei "vollen" Verzeichnissen 🙂



  • Mehr oder weniger spontan haben wir uns grade entschieden (Naja, geplant war es ja schon etwas länger), die Versionsnummer von PrettyOS auf 0.0.1.0 zu erhöhen, weil folgendes vorhanden ist:

    • Grundstrukturen des Kernels funktionieren (Das führe ich jetzt nicht einzelnd auf 😉 )
    • Unterstützung für Floppy und USB. (Schreibend und lesend)
    • Unterstützung für FAT12, 16 und 32. (Schreibend und lesend)

    Die letzte Stelle (a.b.c.d) wird mit jeder Revision inkrementiert, aber bei Veränderungen der höheren Versionszahlen zurückgesetzt, also fangen wir dort jetzt wieder von 0 an.

    Version 0.0.1.0 (Rev. 554):

    • Strg+u schreibt jetzt auf USB-Stick (den ersten im disk-Array)
    • Strg+s schreibt aufs erste Floppy-Laufwerk

  • Mod

    Rev. 555: 0.0.1.1

    Korrekturen in usb2_msd.c (Transfer Check)

    Test auf meinem Developer-PC:
    Beim port-check des EHCI wird inzwischen alles ausgefiltert, was nicht als USB Mass Strorage Device in unserem Sinne taugt (web cam, hub, card reader).
    Der card reader wurde als 3:\ (hinter Floppy und RAMDisk) eingetragen. Ein neu angesteckter Stick als 4:\
    Ich war nun gespannt auf strg+u, aber alles hat bestens geklappt. Da der card reader (wegen fehlender card) kein FAT aufzuweisen hatte, wurde brav der stick mit FAT32 auf 4:\ gewählt.

    Zum Glück hat MrX auf mich gehört und den FAT-Test implementiert. 👍

    video.c, zeile 253:

    if(disks[i] && disks[i]->type == ScreenDest && (disks[i]->partition[0]->type == FAT12 || disks[i]->partition[0]->type == FAT16 || disks[i]->partition[0]->type == FAT32))
    


  • Rev. 556:

    * Aktualisiertes Makefile löscht bei 'make clean' wirklich alle temporären Dateien


  • Mod

    Rev. 557: 0.0.1.2

    - Kernel von 0x40000 nach 0x100000 verschoben (BL2, kernel.ld)
    - Umbenennungen und Optimierungen in fat.h/c


  • Mod

    Rev. 558: 0.0.1.3

    keyboard.c und userlib.c: bool keyPressed(VK key); [VK = Virtual Key analog winuser.h]

    Rev. 559: 0.0.1.3
    Korrektur: man muss shiftascii[...] nehmen wegen der Großbuchstaben.
    Dann gibt das aber Probleme mit den Zahlen. 🙄



  • Rev. 560:

    * Xcode Projektfile hinzugefügt (BUILD funktioniert darin nicht, ist aber deutlich praktischer beim Bearbeiten des Sourcecodes als jede Datei einzeln zu öffnen)



  • Rev. 561:

    * Xcode Projektfile wieder entfernt, da svn wieder mal Probleme damit hatte

    d.h. Rev. 561 entspricht Rev. 559


  • Mod

    Rev. 562: 0.0.1.4

    Korrektur bezüglich keyPressed(...)

    ckernel.c in "idle loop":

    /// TEST
    if (keyPressed('A') && keyPressed(VK_LSHIFT)) {printf("\nshiftleft+A"); }
    if (keyPressed('D') && keyPressed(VK_RSHIFT)) {printf("\nshiftright+D");}
    if (keyPressed('1')) {printf("\n1");}
    /// TEST
    

  • Mod

    Rev. 563: Korrektur in syscall.c (&keyPressed vergessen, stand noch auf &nop) 😃

    nun auch ESC getestet:

    if (keyPressed('1') && keyPressed(VK_ESCAPE)) {printf("\nESC+1");}
    

Anmelden zum Antworten