Sourcecode Fortschritt
-
Der via CDI eingebundene e1000-Treiber läuft nun.
Test: qemu 0.14.1 browser.elf
-
version = "0.0.3.164 - Rev: 1365"
- Wochentag-Formel korrigiert (Alternative: http://de.wikipedia.org/wiki/Gaußsche_Wochentagsformel#4._Allgemeing.C3.BCltige_Formel)
- Formale Änderungensiehe auch: http://www.c-plusplus.net/forum/294811-10
-
version = "0.0.3.165 - Rev: 1366"
Wochentag-Formel nochmals überarbeitet:
static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; static bool isLeapyear(uint16_t year) { return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)); } static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day) { day += 6; // 1.1.2000 was a saturday day += (year-2000) * 146097.0/400.0 + days[month-1]; if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28))) { day--; } return ( day % 7 + 1 ); }
-
version = "0.0.3.166 - Rev: 1367"
(in ckernel.c versehentlich eins zu hoch)
Dank an Volkard für seine Hinweise. Damit haben wir nun auch vor 2000 den Wochentag im Griff:
static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; static bool isLeapyear(uint16_t year) { return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)); } // Gregorian calender started 15th October 1582 static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day) { day += 6; // 1.1.1600 was a saturday day += (year/*-1600*/) * 146097.0/400.0 + days[month-1]; if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28))) { day--; } return ( day % 7 + 1 ); }
-
Version 0.0.3.168:
- Ordnerstruktur angepasst:
-- Ordner tasking und util geschaffen
- Devicemanager-Schnittstelle verbessert
-
Version 0.0.3.169:
- Clang ins Buildsystem vollständig integriert
- __unix__ durch Compilererkennung ersetzt (-> Damit "out-of-the-box"-Lauffähig mit GCC 4.5, 4.6 und clang)
- Ergebnis von calculateWeekday gecacht - Nur noch bei Veränderung des Wochentags aufgerufen
-
version = "0.0.3.170 - Rev: 1370"
Formale Änderungen, Arrays in keyboard.c als Tabelle übersichtlich angeordnet
-
Version 0.0.3.171:
- Maustreiber nutzt nun Event-System
- Paging-Modul invalidiert TLB-Einträge, wenn das aktive PD verändert wird
- setjmp "implementiert". Funktioniert leider nicht.
-
Version 0.0.3.172:
- %S-Option bei printf (kernel) ergänzt (gibt Größen in Bytes aus)
- data.o/asm inkrementell gebaut
- Größe einer disk wird angegeben bei strg+d
- Bugfix: Event-Enum im Userspace synchronisiert -> Netzwerk geht wieder
- Kleinere Optimierungen. U.a.:
-- htonl und Makros CLEAR_BIT und SET_BIT (neu) als Assembler-"Intrinsics"
-- Speicher zwischen 0 und 20 MiB mit MEM_NOTLBUPDATE versehen (wird beim Setzen von cr3 nicht aus dem TLB-Cache genommen)
-- Weitere Funktionen inlined
-
version = "0.0.3.172 - Rev: 1373"
irc.c umgestellt auf DNS
-
Version 0.0.3.173:
- Führende 0 bei ftoa ergänzt (basiert nun auf itoa) <-- Das ist sogar standardisiert: http://de.wikipedia.org/wiki/ISO_31-0
- getc, fputs, putc, sinh, cosh, tanh implementiert (-> math.h vollständig)
- Calc überarbeitet (v0.4.0):
-- Unterstützt nun negative Zahlen, Potenzen und Klammern
-- Rechnung kann als Kommandozeilenargument übergeben werden
- IRC verbessert: Server kann beim Start ausgewählt werden
- Zeitmessung in psort verbessert: Zeit zur Ergebnisprüfung nicht mehr mitgemessen
- FloppyImage.img nicht mehr gelöscht vorm Build
- Bugfix: Größenangabe bei Floppysgefixt(1440 KB statt KiB als Ausgangsbasis)
- Bugfix: pow mit Workaround korrigiert für negative Exponenten
-
Disketten verfügen über 1440 KiB (2880*512 byte), wird aber immer als KB geschrieben.
-
Erhard Henkes schrieb:
Disketten verfügen über 1440 KiB (2880*512 byte), wird aber immer als KB geschrieben.
Bug beim Bugfix eingebaut. Wird behoben.
-
Version 0.0.3.174:
- Buildsystem verbessert:
-- Unbenutzte Symbole aus den Userbibliotheken werden nicht mehr gelinkt.
-- Strip bereits beim Linken angewandt
-- Userprogramme bei Änderungen an Userbibliotheken automatisch neu übersetzt
- pow, log und log10 gefixt (neu implementiert)
- Fix für Floppygröße aus r1374 reverted
-
@MrX: calc.elf liefert nun bei 0^5 die 0, das ist fein, bei 5^3 kommt brav die 125, aber ab 5^4 kommt 624 raus, auch bei 5^5 eins zu wenig. Bei 25^0.5 kommt erst 1.5 dann 1. Da sollte man nachschärfen.
-
Bei 25^0.5 kommt erst 1.5 dann 1
Der Taschenrechner kann keine Fließkommazahlen. Er rechnet:
25^0 => 1 -> 1.5 => 1,5 -> atoi("1.5") => 15^4 kommt 624 raus, auch bei 5^5 eins zu wenig
Rundungsfehler, da der Taschenrechner Integer nutzt, aber mit dem Fließkommafunktionen rechnet.
-
Vor der Benutzung der aktuellen Version von calc.elf wird gewarnt. Die Ergebnisse sind weitgehend falsch. Das PrettyOS Team übernimmt keinerlei Haftung für evtl. daraus entstehende Schäden!
-
Version 0.0.3.175:
- Unterstützung für Sysenter/Sysexit. Code aber deaktiviert (task.c, z. 146)
- Unterstützung für SSE: OSFXSR-Bit in CR4 gesetzt, FPU-Status bei Unterstützung entsprechend mit fxsave und fxrstor gesichert
- Global Pages aktiviert (in CR4)
- Bugfix: CPUID-Code früher initialisiert (vor erster Verwendung)
- Bugfix: Inkrementeller Build für initrd.dat gefixt
- Bugfix: "volatile foo*" durch "foo* volatile" ersetzt, wo sinnvoll.
-
Version 0.0.3.176:
- fsmanager-Schnittstelle geändert: fwrite und fread statt fputc und fgetc als Treiberschnittstelle
- Write-Caching im Devicemanager implementiert
- Caching-Mechanismus im FAT-Treiber ausgebaut; Weitere Optimierungen dort.
-
Version 0.0.3.177:
- FAT-Treiber weiter aufgeräumt
- System friert bei Fehlern wie "Division durch 0" nicht mehr ein
- bochs.bxrc auf Bochs 2.5 geupdated