Sourcecode Fortschritt


  • Mod

    Rev. 533:

    Freeze nach dem Laden eliminiert! Liegt an free(fileptr) in fclose (fat.c) ⚠

    Kleinigkeiten im Code von fat.c angepasst
    FAT-debugging auf Lesen/Schreiben reduziert


  • Mod

    Rev. 534: Noch Versuchsversion zur Klärung ⚠

    Durch einen völlig unverständlichen Hotfix geht es nun! 😮

    // fatWrite (fileptr->volume, 0, 0, true); // TEST: das klappt nicht überschreibt auch die root dir 
            uint32_t i, sectorFAT;
            for (i=0, sectorFAT=globalLastFATSectorRead; i<1/*fileptr->volume->fatcopy*/; i++, sectorFAT+=fileptr->volume->fatsize)
            {
                printf("\ni: %u sectorFAT: %u", i,sectorFAT);
                if (singleSectorWrite(sectorFAT, globalBufferFATSector, fileptr->volume) != CE_GOOD)
                {
                    return CLUSTER_FAIL_FAT16;
                }
            }
            globalFATWriteNecessary = false;
            waitForKeyStroke();
    

    Vielleicht sind das Spiegelungen beim Schreiben auf die Floppy. Am ANfang hatten wir da auch Probleme. Müsste so etwas sein. 🙄



  • Revision 535:

    - Projektfile von VC++ 2008 auf 2010 umgestellt
    - file.c/.h gelöscht, fat12.c weiter aufgeräumt
    - Kleinere Änderungen/Optimierungen


  • Mod

    Rev. 536:
    - HOTFIX von fclose nach fatWrite (nur für FAT12) übertragen, damit dies allgemein funktioniert
    - initializeDMA wieder von außen zugänglich gemacht und für flpydsk_read_directory ("fdir") reaktiviert (kein Erfolg)
    - DEBUG-Ausgaben in fat.c zurück gesetzt, feste printf gelöscht

    Strg+s (Screenshot) gelangt nun endgültig via device manager und fat.h/c auf die Floppy Disk. 🙂



  • Dass das mit dem DMA nichts zu tun hat, habe ich ja bereits gesagt...


  • Mod

    Rev. 537:

    fat.c: flushdata ersetzt

    So wie es aussieht, läuft noch alles 🙂

    MrX: bitte Motorsteuerung checken (flushdata hatte vorher singleSectorWrite auch in fwrite!)



  • Revision 538:

    - Floppy-Motor-Bug behoben: Global-Access wurde nicht initialisiert. (Danke für die Hilfe bei der Bugsuche, ehenkes)
    - devicemanager/fat/floppy/usb: Schnittstelle geändert, Gerät wird mit übergeben als void* (nicht disk_t*, sondern disk_t::data)
    - Returnwerte von SectorRead/Write auf FS_ERROR umgestellt
    - Optimierungen


  • Mod

    Rev. 539:
    fat.c:
    - Screenshot (Strg+s) funktioniert nun auch wiederholt (Rückgabewerte korrigiert in fat.c)
    - Optimierungen


  • Mod

    Rev. 540:

    - Screenshots werden nun zusammen gehängt in screen.txt 🙂
    - fopenFileName wurde zu fopen und fopen zu fdopen umbenannt


  • Mod

    Rev. 541:

    fat.c:
    - globaler error abgeschaltet mittels precompiler, wird bisher nirgends verwendet
    - kleinere formelle optimierungen im code


  • Mod

    Rev. 542:

    flpydsk.c:
    Schreiben eines einzelnen Sektors auf Floppy gelöst: kein FDC_CMD_EXT_MULTITRACK !

    Habe den HOTFIX in fatWrite entfernt. 🙂


  • 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)


Anmelden zum Antworten