Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - RedEagle

Seiten: 1 ... 10 11 [12] 13
221
Lowlevel-Coding / C/C++ - Kernel ruft keine Funktionen auf :(
« am: 10. December 2005, 22:06 »
Ist evtl unkla, aber es würde mir auch schon helfen, wenn ich wüsste, welche komponenten für dieses Fehlverhalten verantwortlich ist.

Liegts am Kompiler, Linker, oder evtl am Wechsel von dem 16/32Bit Kernel zum C/C++ kernel??

Im speicher:

Bootloader
16 Bit Kernel
32 Bit Kernel
Datei (8 Sektoren)
32Bit ASM-Teil des Kernels
32Bit C/C++-Teil des Kernels
222
Lowlevel-Coding / C/C++ - Kernel ruft keine Funktionen auf :(
« am: 10. December 2005, 09:42 »
Hi
Ich hab folgenden Code:
#include "bootio.hpp"
#include "types.hpp"

namespace boot
{

char *VRAM = (char*)0xB8000;
//Werte
WORD _position = 0;
BYTE _color    = 0x07;

//-----------------------------------------------------------------------------------

void clrscr()
{
 for(int i=0; i<(80*25*2); i+=2)
 {
  VRAM[i  ] = ' ';
  VRAM[i+1] = _color;
 }
 _position = 0;
}

//-----------------------------------------------------------------------------------

void gotoxy(WORD x, WORD y)
{
 _position = (y*25+x)*2;
}

//-----------------------------------------------------------------------------------

void setcolor(BYTE color)
{
 _color = color;
}

//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------

void print(char *string)
{
 int i=0;

 do
 {
  VRAM[_position  ] = '#';//string[i];
  VRAM[_position+1] = 0xEC;//_color;
 
  i++;
  _position += 2;
 }
 while(string[i-1] != 0);
 
 return;
}

}

#include "types.hpp"
#include "bootio.hpp"

int main()
{

char *VRAM = (char*)0xB8000;
VRAM+=4;
*VRAM = '['; //Geht
VRAM++;
*VRAM = 0xEC;

 boot::gotoxy(1, 1);
 boot::setcolor(0x0A | 0x80); //0x80 == Blinken
 boot::print("Test"); // Text wird nicht ausgegeben
 

VRAM++;
*VRAM = ']'; //Geht auch
VRAM++;
*VRAM = 0xEC;
 
 return 0;
}


Die main-Funktion wird zwar ausgeführt, aber die Funktionen werden nicht durchgegangen...

Wo liegt der Fehler??

Kompilieren tu ich so:
gpp -c -nostdlib -fno-builtin -fno-rtti -fno-exceptions -o d:\reos\_ckernel\bootio.obj d:\reos\_ckernel\bootio.cpp
gpp -c -nostdlib -fno-builtin -fno-rtti -fno-exceptions -o d:\reos\_ckernel\kernelc.obj d:\reos\_ckernel\kernelc.cpp

Und das ist meine link.txt:
OUTPUT_FORMAT("binary")
INPUT(d:\reos\_ckernel\kernelexe.obj d:\reos\_ckernel\kernelc.obj d:\reos\_ckernel\bootio.obj)
ENTRY(start)
SECTIONS
{
  .text  0x11E00 :
  {
    code = .; _code = .; __code = .;
    *(.text)
    . = ALIGN(1);
  }
  .data  :
  {
    data = .; _data = .; __data = .;
    *(.data)
    . = ALIGN(1);
  }
  .bss  :
  {
    bss = .; _bss = .; __bss = .;
    *(.bss)
    . = ALIGN(1);
  }
  end = .; _end = .; __end = .;
}


Was mache ich falsch??
223
OS-Design / Was muss ich jetzt machen??
« am: 01. December 2005, 14:03 »
1. Kein Fake (ist die Frage so blöd??)

2. Ja... ist nicht direkt Textbasiert, da das GUI aus Bitmap fonts bestehen soll. Dadurch kann man ja eine "Schriftart" nehmen, in der Spezielle Sonderzeichn enthalten sind (ähnlich ASCII(128..255) under DOS oder Konsole)
Hier mal ein ein Screenshot eines meiner Programme:
http://www.directupload.net/show/d/495/tiAbz8Ef.jpg
So in etwa (nur Besser und Schöner) soll es aussehen (Größer als 25×80 Zeichen)
224
OS-Design / Was muss ich jetzt machen??
« am: 01. December 2005, 12:54 »
Hi
Ich habe bin jetzt im PMODE. Wie soll es jetzt weiter gehen??

Ziele:
singel user system
GUI: Textbasiert (in C++) (aber mit !!Bitmap!!-Fonts)
Singeltasking

und noch ne Frage zum Singeltasking-modus:
Mein System soll eigentlich nur als CD/MP3-Player- Taschenrechner- oder Notizbuchersatz dienen, und nicht wirklich so großartige dinge wie MenuetOS o.ä. systeme können.
aber wie geht das mit den Treibern??
225
Lowlevel-Coding / Textausgabe im PMODE??
« am: 26. November 2005, 22:52 »
sorry, hatte unter der Woche keine Zeit, nachzusehen, ob jemand geantwortet hat :)
226
Lowlevel-Coding / Textausgabe im PMODE??
« am: 26. November 2005, 10:19 »
DANKE ES LÄUFT :!: :!:
227
Lowlevel-Coding / Textausgabe im PMODE??
« am: 20. November 2005, 11:35 »
Vom bootloader zum 16Bit Kernelteil
; Springe zu diesem Kernel
   mov ax, 0x1000 ; Adresse des Programms
   mov  es, ax   ; Segmentregister updaten
   xor  bx, bx     ; bx auf 0 wegen ES:BX
   ; Jetzt die Anresse des Kernels in den Stack laden
   push ax
   mov ax, 0
   push ax

retf ; und zum kernel springen


Anfang des 16Bit Kernelteils
[Bits 16]
;org 0x1000 ; Geht nicht (bochs startet neu)
jmp start

start:
   mov ax, 0x1000 ; Segmentregister update
   mov ds, ax
   mov es, ax
;...


Ende des 16Bit Kernelteils
   ; Selector
    mov ax, codesel
    mov ds, ax
    mov es, ax
    mov fs, ax
    mov gs, ax
    mov ss, ax
    mov esp, 0x1FFFFF ; Stack mit 2 MB

   PM3:
    jmp ende

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Ende                               ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
times 512-($-$$) db 0
ende:


Anfang des 32Bit Kernelteils (der 16Bit - Teil und der 32Bit - Teil sind mit MergeKernel.exe "verbunden"

[Bits 32]
jmp start ; Variablen überspringen

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Variablen                               ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
msg_REOS db 0x0C,'RedEagle Operating System',0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Start                                   ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

start:


Immer wenn ich irgendwas mit "org" mache restartet bochs (außer "org 0")
228
Lowlevel-Coding / Textausgabe im PMODE??
« am: 19. November 2005, 08:39 »
Auch nach fast 3 Wochen habe ich noch nicht ausgegeben...

Ich habe jetzt eine Funktion geschrieben, die mir HEX-Werte ausgibt, um den Fehler genauer zu "untersuchen"
mir ist aufgefallen, das ESI auf eine Bitfolge zeigt, die in meinem Code überhaupt nicht vorkommt (hab mit HEX-Editor danach gesucht)

Hier mal ein ScreenShot (ich hoffe die mit Paint eingefügten Kommentare sind ausreichend)


Ich weiß immer noch nicht, was falsch ist. Ich habe mir schon den Code vom PiratOS; U-OS; ObjectOS und MenuetOS angeguckt, aber da ist es auch nicht viel anders.

Mache ich vieleicht schon beim Kompiliern ein Fehler??
Hier mal eine Kurtzform des Batch-Codes:
echo -- Compile Kernel ----------------------
 cd "d:\nasm\"
 nasmw -f bin -o d:\reos\_boot\boot.bin d:\reos\_boot\boot.asm
 nasmw -f bin -o d:\reos\_kernel\kernel16.bin d:\reos\_kernel\kernel16.asm
 nasmw -f bin -o d:\reos\_kernel\kernel32.bin d:\reos\_kernel\kernel32.asm

echo -- MergeKernel -------------------------
 cd "d:\REOS\"
 MergeKernel d:\reos\_kernel\kernelxx.bin d:\reos\_kernel\kernel16.bin d:\reos\_kernel\kernel32.bin

echo -- Create image-file -------------------
 copy d:\reos\_boot\boot.bin + d:\reos\_kernel\kernelxx.bin d:\reos\reos.img

echo -- Copy image-file to bochs ------------
 copy d:\reos\reos.img d:\reos\testumgebung\reos.img
229
Lowlevel-Coding / Textausgabe im PMODE??
« am: 13. November 2005, 10:47 »
Ich hab den Kernel nochmal ganz anders und neu gemacht (und in 16Bit und 32Bit aufgeteilt). Das wechseln in den PMode habe ich mit hilfe eines anderen Tutorials gemacht. Das einzigste, was unverendert geblieben ist, ist die A20Gate - sache, und meine printstr.
Es läuft immer noch nicht -> immer noch der gleiche Fehler
Ich habe allerdings in dem Code eines Anderen OS's gesehen, das die bei der GDT extra noch Was für den VRAM gemacht haben. Ist das notwendig??

UND:
Was für ursachen kann den die Fehlfunktion von ESI haben?? Wonach muss ich suchen??
230
Lowlevel-Coding / Textausgabe im PMODE??
« am: 12. November 2005, 10:32 »
So ich weiß jetzt auch, wo in etwa der Fehler ist.
Vor dem Wechsel in den PMode ist mit SI noch alle klar; nachher nicht mehr.

ABER WAS IST FALSCH??
ps.: Ich habe den code, so die es in dem PMode-Tutorial steht.
231
Lowlevel-Coding / Textausgabe im PMODE??
« am: 09. November 2005, 15:05 »
Ich habe inzwischen den Fehler gefunden.:
  mov ebx, 1
mov ecx, 1
mov esi, msg_REOS
add esi, 0x10000-1 ; So gehts !! (Komisch)
call printstr


Ich weiß nur nich, warum, und wo der Fehler auftritt....
232
Lowlevel-Coding / Textausgabe im PMODE??
« am: 05. November 2005, 14:13 »
Ich habs mal auf meine HP geladen, da die e-mail adresse irgendwie nicht funktionierte:
http://www.redeagle-software.de.vu
Auf der Startseite ist unten rechts eine Fläche mit der Überschrift "Administration". Der letzte "punkt" (in kleiner schrift "REOS-Files")
ist ein link zu dem Archiv.
233
Lowlevel-Coding / Textausgabe im PMODE??
« am: 05. November 2005, 12:57 »
Uploaden ist schlecht... (hab keinen server)
Wenn du mir ne e-mail adresse gibts, kann ich dir die Daten zuschicken.
(3.8 KB rar-archiv)
234
Lowlevel-Coding / Textausgabe im PMODE??
« am: 05. November 2005, 12:10 »
Geht leider auch nicht...

Hier mal das, was ausgegeben wird (evtl hilfts ja)
Ein Schwartzes (großes) 'S' auf weißem Hintergrund
und entweder ASCII 219 in weiß, oder ein Leerzeichen mit weißem Hintergrund.
Position ist 1×1 (also so, wie ich es möchte)

Kann es evtl am PMODE liegen (das ich da was Falsch gemacht habe??)
235
Lowlevel-Coding / Textausgabe im PMODE??
« am: 05. November 2005, 11:58 »
hä??
Ich will doch von [esi] in dl bzw bl schreiben... (mov bl, [esi])

fals du [edi] meinst: geht auch nicht :( (mov [edi], bl)
236
Lowlevel-Coding / Textausgabe im PMODE??
« am: 05. November 2005, 10:56 »
Geht immer noch ich :(
  mov ebx, 1
   mov ecx, 1
   mov esi, textausgabe
   call printstr ; GEHLT NICHT :(

   

ENDLESS:
   jmp ENDLESS ; Endlosschleife


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
;; Variablen                               ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; 1. Byte ist das Attribut
textausgabe db 0x8E,"REOS",0,0


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
;; Funktionen                              ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;ESI>Test EBX>Spalten ECX>Zeilen
printstr:
   ; Position berechnen
   imul ecx, 80     ; 80 Zeichen pro Reihe
   add  ebx, ecx    ; und die Aktuelle spalte dazu
   imul ebx, 2      ; mal 2 wegen dem Attr.-byte

   ; VRAM initialisieren
   mov edi, 0xB8000 ; VideoRam
   add edi, ebx     ; Zur gewünschten adresse springen
   ; Farbe laden
   mov dl, [esi]    ; 1. Zeichen laden (Farbcode) in dl

   ; ausgabeschleife
  .char:
   ; Auf abbruch prüfen
   inc esi          ; Zum Nächsten Zeichen gehen
   mov bl, [esi]    ; und in bx laden
   cmp bx, 0        ; ist das Byte = 0 ?
   jz  .done        ; Dann ist jetzt schluss

   ; Zeichen ausgeben
   mov [edi], bx    ; Zeichen ausgeben
   inc edi          ; Weiter im VRAM
   mov [edi], dx    ; Attribut ausgeben
   inc edi          ; Weiter im VRAM
   jmp .char

  .done:
   ret


Und zwar ist das, was in ESI steht, nicht das , was ich an die Funktion übergeben -> Farbe, Zeichen, anzahl der Zeichen stimmt nicht mit dem überein, was ich definiert habe :(

Wenn ich ein Konstantes Zeichen, und ein Konstantes Attribut benutze (auf esi verzichte) funktioniert es (hab ne ClearScreen-Funktion gemacht)...
237
Lowlevel-Coding / Textausgabe im PMODE??
« am: 04. November 2005, 22:16 »
ok, DANKE
238
Lowlevel-Coding / Textausgabe im PMODE??
« am: 04. November 2005, 21:47 »
Hab noch nen Problem mit den Grafikmodus:
setscreenservice:
   xor ax, ax   ; ax löschen
   mov ah, 0x00 ; Funktion 00 -> Set video mode and clear screen
   mov al, 0x12 ;  Einstellung
   int 0x10     ; Screen servive aufrufen
   ret

  mov esi, text
   mov ebx, 0
   mov ecx, 0
   mov dx,  0x0E
   call printstr ; GEHLT IM AKTUELLEN GRAFIKMODUS NICHT :(
   
  ; ,,:: WEITERSCHREIBEN ::,, ;
  ; '':: WEITERSCHREIBEN ::'' ;

ENDLESS:
   jmp ENDLESS ; Endlosschleife


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
;; Variablen                               ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

text db "Test",0


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
;; Funktionen                              ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;ESI>Test EBX>Spalte ECX>Zeile DX>Attribut
printstr:
   imul ecx, 80     ; 80 Zeichen pro Reihe
   add  ebx, ecx    ; und die Aktuelle spalte dazu
   imul ebx, 2      ; mal 2 wegen dem Attr.-byte

   mov edi, 0xB8000 ; VideoRam
   add edi, ebx     ; Zur gewünschten adresse springen

  .char:
   mov bx, [esi]
   cmp bx, 0        ; Ist das Aktuelle Byte 0?
   jz  .done        ; dann ist jetzt schluss
   
   mov [edi], bx    ; Zeichen ausgeben
   inc edi          ; Weiter im VRAM
   mov [edi], dx    ; Attribut ausgeben
   inc edi          ; Weiter im VRAM
   inc esi          ; Nächste Zeichen
   jmp .char
 
  .done:
   ret


Es wird nichts ausgegeben :(

Mein Ziel:
Ich möchte wehren des Bootvorgangs alle möglichen tätigkeiten ausgeben,
und bei erfolg in grün "[OK]" dahinter schreiben.

Wie mache ich das?? So wie's jetzt ist, gehts offensichtlich nicht :(
239
Lowlevel-Coding / Textausgabe im PMODE??
« am: 04. November 2005, 20:54 »
Vielen Danke!!
240
Lowlevel-Coding / Textausgabe im PMODE??
« am: 04. November 2005, 20:32 »
Ich hab schon einiges Versuch, aber irgendwie komme ich nicht weiter.
!Wenn! NASM meinen code akzeptiert, dann macht bochs nicht mit (restart an der Stelle)

Wie mache ich das in ASM??
Seiten: 1 ... 10 11 [12] 13

Einloggen