Sourcecode Fortschritt
-
Rev. 527:
kleine verbesserung durch globales fileTemp in fat.c für fopenFileName
Wenn man bei realPC vorher die Floppy quick-formatiert, damit das screen.txt wirklich neu ins Verzeichnis geschrieben wird, dann läuft es fehlerfrei durch. Die Datei hat aber trotz Anzeige des Sektor-Schreibens noch keinen Inhalt.
-
Rev. 528:
- FILEPTR durch FILE* ersetzt
- fileTemp auf heap
- FAT-Debugging verbessertProblem: bei Strg+s wird der root dir Eintrag und die Daten geschrieben, leider noch nicht die FAT-Cluster-Kette
-
Rev. 529:
- NULL Pointer abgefangen bei fopenFileName Rückgabewert (fwrite und fclose unterbinden)
- DEBUG verbessertProblem: FAT1 u. FAT2 werden noch nicht geschrieben
-
Rev. 530: Zwischenschritt
fclose angepasst, so dass FAT1 u. FAT2 geschrieben werden, wenn notwendig.
Allerdings ist jetzt noch ein merkwürdiger Fehler enthalten.
FAT wird noch nach root dir geschrieben.Vielleicht findet jemand den Fehler durch Vergleich 529/530 (AFK)
-
Rev. 531: Zwsichenstand (Arbeitsversion)
Zweites write nach root dir "zerschießt"
-
Revision 532:
- Floppy-Motor-Bug behoben.
- Optimierungen und Kürzungen
-
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
-
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
-
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öschtStrg+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...
-
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
-
Rev. 539:
fat.c:
- Screenshot (Strg+s) funktioniert nun auch wiederholt (Rückgabewerte korrigiert in fat.c)
- Optimierungen
-
Rev. 540:
- Screenshots werden nun zusammen gehängt in screen.txt
- fopenFileName wurde zu fopen und fopen zu fdopen umbenannt
-
Rev. 541:
fat.c:
- globaler error abgeschaltet mittels precompiler, wird bisher nirgends verwendet
- kleinere formelle optimierungen im code
-
Rev. 542:
flpydsk.c:
Schreiben eines einzelnen Sektors auf Floppy gelöst: kein FDC_CMD_EXT_MULTITRACK !Habe den HOTFIX in fatWrite entfernt.
-
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