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 - nooooooooos

Seiten: 1 ... 35 36 [37]
721
Lowlevel-Coding / Timer Interrupt
« am: 10. October 2005, 18:16 »
Wenn ich meine Bochs-Konfigurationsdatei mit dem Debugger starte, meldet Bochs :"directive C not understood :" Diese Meldung kommt aber nicht wenn ich den normalen Bochs starte.

Wenn ich allerdings den Debugger starte und meine Kon.. Datei übers Menu auswähle geht es. Wenn ich dann mit "lb" eine Adresse eingebe und c drücke dann kommen hunderte Zeilen von "CPU Loop" Und das "Computer Fenster" von Bochs blinkt nicht wie es das im normalen Bochs Betrieb würde. Was bedeutet das ???


Danke
722
Lowlevel-Coding / Timer Interrupt
« am: 10. October 2005, 17:26 »
Gute Idee !!

Aber wie geht das mit dem Debugger. Kannst du mir das mal kurz erklären ???

Danke
723
Lowlevel-Coding / Timer Interrupt
« am: 10. October 2005, 14:50 »
Also

Mit dem Blinken von Bochs mein ich einen Neustart. Das " jmp $ " funktioniert bis zum sti. Von da an nüzt es nichts mehr, weil dann warscheninlich der Timer Interupt anfängt zu "timern".
724
Lowlevel-Coding / Timer Interrupt
« am: 10. October 2005, 12:56 »
Hallo

Ich bins nochmal. Wenn ich diesen Code mit Bochs, oder Diskette probiere, dann blinkt Bochs oder der Computer Schaltet sich aus. ;16 Bit Code erstellen
jmp start ;GDT überspringen

NULL_Desc:
dd 0
dd 0

CODE_Desc:
dw 0xFFFF ;Segmentgröße Byte 0/1
dw 0 ;Segmentbasisadresse Byte 0/1
db 0 ;Segmentbasisadresse Byte 2
db 10011010b ;Zugriffsberechtigungen
db 11001111b ;Zusatz + Segmentgröße Bits 16 - 19
db 0 ;Segmentbasisadresse Byte 3


DATA_Desc:
dw 0xFFFF
dw 0
db 0
db 0x92
db 0xCF
db 0

gdt:
Limit dw 0 ;Größe der GDT (wird später eingetragen)
Base dd 0 ;Adresse der GDT (wird später eingetragen)
idt:
Limite dw 0 ;Größe der GDT (wird später eingetragen)
Basiis dd 0 ;Adresse der GDT (wird später eingetragen)
IDTAnfang:
                                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0

                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0

                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0

                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0


                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0

                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0
                    dw Handler, 8, 8E00h, 0

IDTSchluss:
start:

cli

;Interrupts ausschalten

mov eax, cs ;EAX auf derzeitiges Codesegment setzen
mov ds, ax ;DS auf Codesegment setzen

shl eax, 4 ;EAX mit 16 multiplizieren (Lineare Adresse
;des Codesegments errechnen)
mov [CODE_Desc+2], ax ;Lineare Adresse des Codesegmentes als
mov [DATA_Desc+2], ax ;Startadresse des Code- und Datendeskriptors
shr eax, 16 ;eintragen
mov [CODE_Desc+4], al
mov [DATA_Desc+4], al

mov eax, cs ;Startadresse der GDT errechnen
shl eax, 4
add eax, NULL_Desc

mov [Base], eax ;Startadresse der GDT eintragen
mov [Limit], WORD gdt - NULL_Desc -1 ;Größe der GDT errechnen und eintragen

lgdt [gdt]
mov eax, cs
shl eax, 4
add eax, [IDTAnfang]
mov [Basiis], eax
mov eax,[IDTSchluss]
sub eax,[IDTAnfang]
mov [Limite],eax ;Größe der IDT errechnen und eintragen

lidt [idt] ;GDT laden

mov eax, cr0 ;In den Protected Mode schalten,
or eax, 1 ;indem Bit 0 des CR0 Registers auf 1
mov cr0, eax ;gesetzt wird

db 0xea ;FAR-JUMP zum Codesegment
dw PMODE
dw 0x8


[BITS 32] ;32 Bit Code erstellen

PMODE:
mov WORD [CODE_Desc+2], 0 ;Code Segmentstartaddresse auf 0 setzen
mov WORD [DATA_Desc+2], 0 ;Daten Segmentstartadresse auf 0 setzen
mov BYTE [CODE_Desc+4], 0 ;Code Segmentstartaddresse auf 0 setzen
mov BYTE [DATA_Desc+4], 0 ;Daten Segmentstartadresse auf 0 setzen

mov eax, 2 ;Selektor für das Datensegment erstellen
shl eax, 3

mov ds, ax ;Daten- Stack- und Extrasegment mit
mov ss, ax ;Datensegmentdeskriptor laden
mov es, ax
mov eax, 0 ;FS und GS mit Null-Deskriptor laden
mov fs, ax
mov gs, ax
mov esp, 0x1FFFFF ;Stack auf unterhalb der 2 MB Grenze setzen
    mov al,011h                     ; IRQ umleiten auf 20h damit keine Fehler ausgelöst wird.
                    out 020h,al
                    out 0A0h,al

                    mov al,20h
                    out 021h,al
                    mov al,28h
                    out 0A1h,al

                    mov al,4
                    out 021h,al
                    mov al,2
                    out 0A1h,al

                    mov al,1
                    out 021h,al
                    out 0A1h,al

sti

PMODE2:

jmp 0x8:0x10000 + PMODE2
Handler:
    mov al,020h
                    out 020h,al
                    out 0A0h,al

iret
jmp Handler


Was ist daran falsch. Ich weiss nicht mehr weiter denn im Internet hat es nirgends ein Tutorial das nur eine IDT anlegt. Kann es sein, dass irgendwo im Code eine Exeption ausgelöst wird ? Bitte helft mir ich finde im Netz wirklich nichts und Englisch ist nicht so meine Sprache.

GROSSEN DANK
Dominik
725
Lowlevel-Coding / Timer Interrupt
« am: 27. September 2005, 18:23 »
Das Problem besteht wieterhin. Mein EOI Singnal sieht so aus:
                   mov al,20h
                    out 20h,al


Mein Eintrag in der IDT so:
                   dw II, 8, 8E00h, 0

Dabei habe ich ein Label names II das den EOI beinhaltet und mit iret beendet wird.

Vielen Dank
Dominik
726
Lowlevel-Coding / Timer Interrupt
« am: 26. September 2005, 19:47 »
Also das Problem besteht immer noch, auch wenn ich "iret" ohne "d" nehmen.

Ich habe mal für alle Interrupts den selben Handler genommen, da bestand das Problem weiterhin. Nachdem der Bildschirm bei Bochs etwa 20 mal geblinkt hatte, meldete Bochs "Too many registred timers".

Vieleicht hilft das.

Dominik
727
Lowlevel-Coding / Timer Interrupt
« am: 26. September 2005, 17:50 »
Hallo

Ich komme bei meinem eigenem OS nicht mehr weiter. Nachdem ich schon in den PM gewechselt habe, habe ich eine Interrupt Tabelle eingerichtet, und will nun den Timer Interrupt benutzten. Ich leite zuerst die Hardware-Interrupts um und schalte dann die Interrupts ein. Ich habe für den Timer Interrupt einen (bis jetzt noch leeren Handler eingerichtet) welchen ich mit "iretd" beeende.

Wenn ich nun das ganze im Bochs teste, dann blinkt der Bildschirm. Wenn ich das ganze auf eiener Boot-Diskette speichere und 1 zu 1 ausprobiere, dann schaltet sich der Computer immer wieder aus beziehungsweise er startet neu.

Vielen Dank im Vorraus
Dominik
728
Lowlevel-Coding / Bochs
« am: 01. September 2005, 06:54 »
Danke
729
Lowlevel-Coding / Bochs
« am: 31. August 2005, 17:43 »
Hallo

Ich habe ein Problerm mit Bochs. Das ist meine Konfigurationsdatei:
# configuration file generated by Bochs
config_interface: textconfig
display_library: win32
megs: 32
# 32 MB RAM
romimage: file=C:\Programme\Bochs\BIOS-bochs-latest, address=0xf0000
#Standard-BIOS für 1 CPU
vgaromimage: file=C:\Programme\Bochs\VGABIOS-lgpl-latest
#VESA-Grafikbios
boot: floppy
#von Festplatte booten
floppya: 1_44="TriviaOS.img", status=inserted
#damit ich später ne Diskette einlegen kann
# no floppyb
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, mode=flat, translation=auto, path="C:\Programme\Bochs\nt4\nt4.img", cylinders=4161, heads=16, spt=63, biosdetect=auto,

model="Generic 1234"
#meine 2GB-Festplatte
ata0-slave: type=cdrom, path="E:\CDs\WINNT\NT4_WS_DE.ISO", status=inserted, biosdetect=auto, model="Generic 1234"
#ein ISO-CDROM-Laufwerk (CD-Image)
ata1: enabled=0
ata2: enabled=0
ata3: enabled=0
parport1: enabled=0
com1: enabled=1, dev="COM3"
#COM3 ist bei mir ein internes Modem, wird in der Emulation als COM1 verwendet
usb1: enabled=0
# no sb16
floppy_bootsig_check: disabled=0
vga_update_interval: 30000
keyboard_serial_delay: 20000
keyboard_paste_delay: 100000
floppy_command_delay: 50000
ips: 500000
text_snapshot_check: 0
mouse: enabled=0
private_colormap: enabled=0
i440fxsupport: enabled=0
clock: sync=realtime, time0=local
ne2k: ioaddr=0x280, irq=9, mac=fe:fd:de:ad:be:ef, ethmod=win32, ethdev=DC21x4, script=none
#Netzwerkkarte (NE2000) unter Windows 9x
newharddrivesupport: enabled=1
# no loader
log: -
logprefix: %t%e%d
debugger_log: -
panic: action=fatal
error: action=report
info: action=report
debug: action=ignore
pass: action=fatal
keyboard_mapping: enabled=0, map=
keyboard_type: mf
user_shortcut: keys=none
# no cmosimage


Da ich an meinem Nootbook kein Disketten Laufwerk habe, möchte ich das OS direkt starten. Wenn ich allerdings auf die Konfugrationsdatei klicke, startet Bochs und gibt folgende Fehlermeldung aus:

Bochs is exiting with following message:
newharddrivesupport directive is deprecated and should be removed.

Ich bin leider nicht so ein English Hirsch, darum sagt mir der Fehler nicht so viel. Ich verwende Bochs 2.2.1 auf Win XP.

Vielen Dank für eine Antwort

NOOOOOOOOOOOOS
Seiten: 1 ... 35 36 [37]

Einloggen