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

Seiten: [1] 2
1
Lowlevel-Coding / Und wieder CS und DS
« am: 02. March 2005, 22:53 »
Du solltest ds immer dann sichern, wenn du einen anderen Wert reinschreibst, weil du beispielsweise auf Daten in einem anderen Segment zugreifen willst. Wenn du ds nicht wiederherstellst, wirst du keinen Zugriff mehr auf die Daten haben, die in dem anderen Segment lagen. Befehle, die ds einfach verändern sind mir nicht bekannt. Mit ds passiert nichts, solange du es nicht veränderst ...
Für cs gilt dies analog...
2
Lowlevel-Coding / Uhrzeit
« am: 02. March 2005, 16:18 »
Also im RM geht das recht einfach über das Interrupt 1Ah. Die Funktion 02h (Übergabe in ah) gibt dir die Uhrzeit zurück (ch = Stunde, cl = Minute, dh = Sekunde). Die Rückgabewerte sind BCD-Zahlen.
Wies im PM aussieht, ja gute Frage. Ich denke das sollte ohne Probleme über die Ports realisierbar sein.
Have fun :-)
3
Lowlevel-Coding / Bootloader teilen
« am: 02. March 2005, 15:02 »
also für alle, die es interessiert... der Far-Jump ging an die falsche Stelle, deswegen ist er abgeschmiert.
4
Lowlevel-Coding / Bootloader teilen
« am: 01. March 2005, 21:48 »
so hab ich das auch verstanden... ne ahnung woran es noch liegen könnte??
5
Lowlevel-Coding / Bootloader teilen
« am: 01. March 2005, 21:19 »
Hab beide geändert. Sobald der Far-Jump gemacht wird, bricht BOCHS mit dem Fehler "3rd (13) exception without resolution" ab ....
6
Lowlevel-Coding / Bootloader teilen
« am: 01. March 2005, 20:52 »
Da mir die 512 Bytes für den Bootloader nicht ausreichen bevor ich in den PMode schalte, will ich meinen Bootloader teilen. Der erste Teil lädt (unter anderem :-) ) den Code des zweiten Teils des Bootloaders in den Speicher und führt in aus. Im zweiten Teil soll der PMode aktiviert werden. Nun funktioniert der Code, welcher vor dem Teilen funktioniert hat, nicht mehr.
Ich denke es liegt daran dass die Adresse der GDT nicht mehr stimmt...
Hier der Code des zweiten Teils meines Bootloaders, welcher in den PMode schalten soll. Er liegt an 1000h:0000h im Speicher.


cli                      
call _enable_a20

xor ax ,ax
mov ax, ds

gdt [gdt_descriptor]

mov eax, cr0
or eax, 1
mov cr0, eax

jmp gdt_code:_init

[bits 32]

_init:

mov ax, 10h
mov ds, ax
mov es, ax
mov ss, ax
mov esp, 090000h

jmp $

; Es folgen Funktionen und Variablen


THX
7
Lowlevel-Coding / Reboot unnd Ausschalten im pm
« am: 01. March 2005, 10:25 »
Da du nach nem Reboot (nach dem Ausschalten sowieso) den PMode eh neu laden musst, kannst du wie bereits vorgeschlagen in den RM zurückschalten und die BIOS-Ints benutzen... So mach ich das auf jeden Fall...
8
Lowlevel-Coding / VESA-Problem mit Bochs
« am: 27. February 2005, 10:03 »
Hi,
mein Problem ist, dass Bochs nicht in die VESA-Modi mit mehr als 256 Farben schaltet. Beim Booten funktionierts aber Bochs verweilt ohne Aktion und auch ohne Fehler ...
Wo liegt der Fehler??
THX
9
Lowlevel-Coding / Include bei NASM
« am: 09. February 2005, 20:39 »
Ja es lag daran... jetzt funktionierts.  :D
10
Lowlevel-Coding / Include bei NASM
« am: 08. February 2005, 20:36 »
Also irgendwie fühl ich mich angesprochen  :twisted: Ja thx, mach ja irgendwie auch Sinn...
11
Lowlevel-Coding / Include bei NASM
« am: 08. February 2005, 16:50 »
Bei mir hängt Bochs sich beim Starten dann einfach auf. Deinen Versuch hab ich schon mehrmals vorgenommen  :?
12
Lowlevel-Coding / Include bei NASM
« am: 08. February 2005, 16:10 »
Hi,
ist vielleicht eine sehr blöde Frage, aber wie kann ich mit NASM Dateien einbinden. Prinzipiell ist mir das schon klar, aber wenn ich mein OS in kleine Module aufteilen will und meine eigenen Codeteile aus einer externen Datei wieder einbinden will, geht das nicht. Mir gehts lediglich darum, dass ich nicht den gesamten Kernel in einer Datei hab.
Thx
13
Lowlevel-Coding / reboot oder auschalten
« am: 08. September 2004, 15:10 »
also im RM kann man den Rechner folgender Maßen rebooten (entnommen aus Low-Lvl-Magazin Ausgabe1)

db 0EAh              
dw 0000h
dw 0FFFFh

ob das auch im PM klappt, weiß ich nicht.
14
Lowlevel-Coding / Maus im OS
« am: 28. August 2004, 21:53 »
Also 33h ist definitiv ein DOS-Int und kann somit nicht verwendet werden. Eine Beschreibung, wie man eine Maus in ein RM-OS (natürlich auch PM)einbindet, würde mich auch mal schwer interessieren. Vielleicht kann einer hier helfen?
15
Lowlevel-Coding / Grafik-Mode 640x480
« am: 22. August 2004, 10:54 »
Also wenn ich das richtig sehe, hast ja nur 16 Farben zur Verfügung... Ich bin mir nicht ganz sicher, aber ich denke du kannst die Farbwerte genauso setzen, wie im Mode 13h, also über die Ports. Probiers eben mal.
16
Lowlevel-Coding / Grafik im Real-Mode
« am: 18. August 2004, 22:43 »
Also wen es interessiert, ich habs! Wenn man direkt in den Videospeicher an der Adresse 0a000h schreibt, scheint das enorme Geschwindigkeitseinbußen zu bringen. Als Lösung schreibt man die Daten an eine andere Adresse im Speicher und kopiert diesen Bereich anschließend mit movsw. In meinem Fall hat es die Ausführung mindestens um das 30-fache (wenn nicht weit mehr) beschleunigt.
17
Lowlevel-Coding / Grafik im Real-Mode
« am: 11. August 2004, 12:08 »
Hi,
ich hab mir aus Spaß und Interesse eine kleine Grafikdemo im Real-Mode gebastelt. Dazu hab ich den Grafik-Modus 13h (320*200, 256 Farben) benutzt. Mein Ziel war es einen Interpolationseffekt zu erzeugen. Für alle die nicht wissen was ich meine, erklär ich es mal. Ich hab die Farbpalette über Ports mit 240 Farben belegt, wobei Eintrag 0 schwarz ist und die Palette mit aufsteigenden Einträgen dunkelrot, hellrot, gelb und bei Eintrag Nummer 240 schließlich mit weiß belegt ist. Wenn ich jetzt ein weißes Objekt zeichne und der Interpolationseffekt anwende, entsteht eine Art Feuereffekt. Ist keine neue Sache, aber ich wollte es halt mal machen.
Mein Problem ist die Geschwindigkeit der Interpolationsroutine. Ich habe vor Jahren den gleichen Algorithmus mit Pascal umgesetzt und es lief auf einem 60 MHz - Rechner recht gut. Jetzt mit NASM und auf einem 2,7 GHz - Rechner, kann ich die Durchgänge fast mitzählen. Vielleicht hab ich irgendwas verhauhen. Hier ist der Quelltext des Interpolationsalgorithmus:

   
.start:
mov ax, 0a000h            ; Segment-Adresse vom Bildschirmspeicher
mov es, ax                    ; nach es schreiben
mov si, 0                    ; si auf null setzen -> Anfang des Bildschirmspeichers
mov cx, 64000           ; Zähler auf 64000 -> jeder Punkt

.loop:
xor dx, dx           ; dx auf null setzen
xor ax, ax                   ; ax auf null setzen
mov al, [es:si-1]          ; Farbwert des linken Punktes nach al
mov dl, [es:si+1]         ; Farbwert des rechten Punktes nach al
add ax, dx                  ; Beide Werte addieren, Ergebnis in ax
mov dl, [es:si-320]      ; Farbwert des oberen Punktes nach dl
add ax, dx                  ; und zu ax addieren
mov dl, [es:si+320]      ; Farbwert des unteren Punktes nach dl
add ax, dx                  ; und zu ax addieren
shr ax, 2              ; Summenfarbwert in ax durch 4 teilen
or ax, ax              ; Flags setzen
jz .zero              ; Wenn ax = 0, springe zu .zero
dec ax              ; Wenn ax nicht null, um eins erniedrigen

.zero:
mov [es:si], al           ; neuen Farbwert setzen
inc si                 ; si erhöhen -> nächster Punkt
dec cx                      ; Zähler erniedrigen
jnz .loop                   ; Solange Zähler nicht 0, springe zu .loop

mov ah, 01h               ; Funktion zur Überprüfung des Tastaturpuffers
int 16h             ; Wenn ZF = 1 dann ist kein Zeichen vorhanden
jz .start             ; Wenn kein Taste gedrückt, dann nächster Durchgang

       
Noch mal zur Erklärung: Der Algorithmus berechnet für jeden der 64000 Bildpunkte den Farbwert aus den 4 angrenzenden Punkten, indem ein Mittelwert ihrer Farbwerte gebildet wird und dieser um eins erniedrigt wird.
thx for your help!!
18
Offtopic / Ist Windows wirklich so schlecht ?
« am: 16. July 2004, 01:17 »
also als ich vor ein paar Wochen php unter Linux eingerichtet habe, hat dass mir echt viel Zeit gekostet und ohne ausführliche Doku hät ichs nie hinbekommen. Wenn du nämlich php, mit posgrsql und apache als binärdistribution einrichten willst, musst du erstmal wissen, was man da nach ./configure noch so für Parameter angeben muss. Es ist einfach teilweise schon etwas anstrengend. Wenn da die Masse der Leute keine Lust drauf hat, kann man ihnen nicht verübeln. Die meisten Menschen neigen nunmal eher dazu den einfacheren Weg zu wählen, ob der der bessere ist, sei mal dahin gestellt. Tatsache ist, für alles gibt es auch keine rpms. Ich finde Linux trotzdem besser, weil es sauberer ist. Außerdem ist alles was ein Programmierer an Tools braucht, standardmäßig vorhanden!
19
Offtopic / Ist Windows wirklich so schlecht ?
« am: 15. July 2004, 20:55 »
also von Sicherheitslücke kann mal wohl nicht sprechen, weil das Rechtesystem unter Linux wesentlich sicherer und besser ist. oder hast du jemals einen Virus unter Linux gehabt? Ich denke nicht, weil das Bertriebsystem einfach sauberer ist ... und es praktisch keine Viren für Linux gibt.
20
Lowlevel-Coding / 64kb Speicher reservieren
« am: 15. July 2004, 16:26 »
ja aber wenn ich zum Beispiel mit resb einen Speicherbereich reserviere, dann weiß ich nicht in welchem Segment sich dieser Speicherbereich befindet. wie kann man da das Segment selber festlegen?
Seiten: [1] 2

Einloggen