Sourcecode Fortschritt
- 
					
					
					
					
 Ich habe es auch unter Sun VB mit EHCI versucht (0xF08.....), gleiches Resultat.  Wir haben noch zwei Probleme (rev 121): 
 Sun VB: VERR_REM_VIRTUAL_CPU_ERROR
 MS VPC: Interner Fehler auf virtuellem ComputerBeim Start der Shell (versteht momentan keiner, hat irgendwas mit dem Task-Wechsel zu tun) Adressen mit #PF: 
 Adresse MMIO: in http://www.henkessoft.de/OS_Dev/Bilder/rev121a_PF.JPG zu sehen: 0xF2001000
 Bei EHCI hatte ich 0xF1800000, dort knallte es auch.pci.c line 285, falls vendor verschieden: if( (pciDev_Array[number].deviceID == 0x8139) && (pciDev_Array[number].vendorID == 0x10EC) )können wir den vendorID-Zweig da raus nehmen? 
 
- 
					
					
					
					
 Ok, hab den Fehler ausfindig gemacht. Sorry, war mein Bug. Hab's eingecheckt  Edit: Rev 124 
 - Einen Bug gefixt, läuft bei mir jetzt unter Bochs und Qemu.Edit2: Das war ja ein wirklich bescheuerter Fehler. Und merkwürdig/schade, dass er sich nicht früher bemerkbar gemacht hat. Ich hatte // Setup the page tables for the kernel heap (3GB-4GB), unmapped page_table_t* heap_pts = malloc( 256*sizeof(page_table_t), PAGESIZE ); memset( heap_pts, 0, 256*sizeof(page_table_t) ); for ( uint32_t i=0; i<256; ++i ) { kernel_pd->tables[768+i] = heap_pts; kernel_pd->codes[768+i] = (uint32_t)kernel_pd->tables[768+i] | MEM_PRESENT | MEM_WRITE; heap_pts += sizeof(page_table_t); //<----- }An der Stelle mit dem Pfeil wurde der Zeiger natürlich um das Quadrat der Größe weiterbewegt - ich hatte "heap_pts" wie einen char-Pointer behandelt. Natürlich wird der Zeiger bei +XumX*Größeweiterbewegt. Ein+= 1wäre richtiger gewesen..
 
- 
					
					
					
					
 bei mir ist bisher nur rev 123 verfügbar? (in ckernel.c: rev. 124)  Das war ja ein wirklich bescheuerter Fehler. Fehler sind immer bescheuert.  Super! Rev. 123 läuft schon gut. Nun können wir endlich den pciScan hinter Paging und Heap ausführen. Danke!  
 
- 
					
					
					
					
 Rev. 124: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=124pci.c: EHCI (USB) MMIO ebenfalls in das ID mapping eingebunden Revisions-Nr. wieder identisch! Real Hardware läuft (von Cuervo kommen da allerdings Problemmeldungen, sollten verschwinden, sobald das MS VPC u. Sun VB Problem gelöst wird). Status bei den Simulationen: 
 Bochs 2.4.2: läuft
 Qemu: läuft
 MS VPC 6.0.192.0: läuft! 
 Sun VB 3.1.2 und 3.1.4: läuft! @Badestrand: was hast Du da genau gerade gebogen? (wichtig, weil wir immer wieder in diese Grube fallen, ohne es zu merken) 
 EDIT: Ich denke, Du bist unschuldig an dieser Sache mit MS VPC und Sun VB. EDIT (aus IRC): 
 - bei 115 hatte ich notiert, MS VPC und Sun VB brechen nach dem Start der Shell ab.
 - test mit dem FloppyImage aus dem SVN: ok
 - da soll man nicht durchknallen
 - Die Probleme mit Sun VB und MS VPC lassen sich nicht nachvollziehen!
 - alles geht plötzlich
 - so liest sich das auch oft im Internet: "durch Neuinstallation von VB behoben"
 - das würde ich wirklich gerne verstehen
 - XanClic hat beim Suchen und Vergleichen auch nie was gefundenWie bekommt man das Thema "Tests mit Simulationen und realer Hardware" in den Griff? 
 
- 
					
					
					
					
 Rev. 125: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=125- RTL8139.c: handler ausgelagert 
 - Adressen von IO komplett auf MMIO umgestelltRev. 126: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=126
 install_RTL8139(uint32_t number) auch noch ausgelagertReal Hardware läuft Status bei den Simulationen: 
 Bochs 2.4.2: läuft
 Qemu 0.11.50: läuft
 MS VPC 6.0.192.0: läuft.
 Sun VB 3.1.2 und 3.1.4: läuft.
 
- 
					
					
					
					
 Rev. 127: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=127- Zwischenschritt in RTL8139.c 
 - neu: ipTcpStack.h/c
 
- 
					
					
					
					
 Rev. 128: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=128userlib.c: gets(char*) funktionsfähig gemacht, aber irgendwie merkwürdig. char* gets(char* s) { int i=0,flag=0; char c; //settaskflag(0); do { c = getch(); if(c=='\b') // Backspace { if(i>0) { putch(c); s[i-1]='\0'; --i; } else { beep(50,20); if(flag==false) { putch('\n'); flag=true; } } } else { s[i] = c; putch(c); flag=false; i++; } } while(c!=10); // Linefeed s[i]='\0'; //settaskflag(1); return s; }Vielleicht liegt es auch daran, das settaskflag ausgeschaltet wurde, bitte testen. Obiges gets ist nur work-around, aber auch gut zum Testen. 
 Die ausführliche Version ist hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-260731-and-start-is-50.htmlIch habe es am realen PC getestet: Da kommt man nicht mehr in die obere Zeile. 
 Bei qemu geht das ab und zu, also "unsauber".Das hat mit der Task-/Video-Steuerung zu tun. 
 ich hoffe, dass dieses gets zunächst die Wünsche von MrX und Cuervo befriedigen. 
 
- 
					
					
					
					
 Rev. 129: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=129TCP/IP-Stack leicht verändert/korrigiert 
 
- 
					
					
					
					
 Rev. 130: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=130TCP/IP-Stack leicht verändert Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev130.PNG 
 
- 
					
					
					
					
 Rev. 131: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=131Korrektur bei TCP/IP (zusätzlich im Screenshot oben: Erkennung von ARP)  
 
- 
					
					
					
					
 Rev. 132: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=132pci.c: USB EHCI: Einstieg in Daten-Ermittlung (z.B. OpRegs Adresse, siehe: http://www.c-plusplus.net/forum/viewtopic-var-t-is-253016-and-start-is-39.html) 
 
- 
					
					
					
					
 Rev. 133: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=133- paging.c: bool paging_do_idmapping( uint32_t phys_addr ) versuchsweise ab 0xC0000000 (Grund: manche MMIO beginnen ab 0xD....... oder 0xE.......) 
 - ckernel.c:int main() { init(); pODA->Memory_Size = paging_install(); printformat( "\n\nMemory size: %d KB\n", pODA->Memory_Size/1024 ); heap_install(); pciScan(); // scan of pci bus; results go to: pciDev_t pciDev_Array[50]; (cf. pci.h) tasking_install(); sti();pciScan direkt hinter heap_install(). In pciScan() werden MMIO (USB EHCI, Netzwerkarte ID-gemappt. Mal sehen, ob es klappt oder #PF hagelt?  
 
- 
					
					
					
					
 Rev. 134: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=134Für unsere verehrten User: 
 void clear_screen() <--- TODO: nur oberen Bildschirmbereich löschen.
 void gotoxy(unsigned char x, unsigned char y)
 
- 
					
					
					
					
 Rev. 135: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=135userlib.h/c: clear_screen() umgestellt auf Löschen der ersten 46 Zeilen (User-Bereich). 
 
- 
					
					
					
					
 Rev. 136: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=136- kleine Verbesserungen nach cppcheck 
 - c99 im makefile bei user ergänztRev. 137: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=137ext in paging.c wieder eingefügt, ansonsten Error-Meldung. 
 
- 
					
					
					
					
 Rev. 138: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=138neu: ehci.c (als Keimzelle für den USB 2.0 Host Controller) vergessen worden! 
 userlib.h/.c: clearScreen(backcolor)
 flpydsk.c: Zählervariable versuchsweise im Schleifenkopf definiert (c99 style)
 
- 
					
					
					
					
 Rev. 139: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=139- ehci.c war vergessen worden, jetzt dabei 
 - fat12.c auf c99 umgestellt
 
- 
					
					
					
					
 Rev. 140: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=140pci.c und initrd.c auf c99 umgestellt (Zähler im Schleifenkopf) 
 
- 
					
					
					
					
 Rev. 141 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=141rtl8139.c, util.c und userlib.c auf c99 umgestellt 
 
- 
					
					
					
					
 Rev. 142: 
 http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=142Fehler in clear_userscreen (video.c) korrigiert