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

Seiten: [1] 2 3
1
Lowlevel-Coding / Floppy auf echtem PC lesen
« am: 24. September 2005, 19:58 »
jaja hab ich auch schon überlegt...
sind aber fast alles parameter die geändert werden
müssen .. man würde keinen besonderen Vorteil
dadurch bekommen.

Aber plz ich hoffe irgentjemand fällt ein warum es nich geht
2
Lowlevel-Coding / Floppy auf echtem PC lesen
« am: 19. September 2005, 12:17 »
biiitttteeee helft mir !!! bin praktisch fertig mit dem OS kann es aber nich auf nem echten PC austesten !
3
Lowlevel-Coding / Floppy auf echtem PC lesen
« am: 17. September 2005, 16:48 »
kein problem.
danke das du es auf dich nimmst den ganz durch zu guckn

boot.asm:

[BITS 16]
org 0x7C00

start:

mov [bootdrv], dl

mov ax, cs
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax

; -----------------------------------
; Setup Stack
; -----------------------------------
cli             ; Keine Interrupts!
mov ax, 0x9000  ; Stackadresse
mov ss, ax      ; SS = 9000 (unser Stack)
mov sp, 0       ; SP = 0000  (der Stackpointer)
sti             ; Interrupts zulassen

; -----------------------------------
; Enable A20
; -----------------------------------
call enableA20

; -----------------------------------
; Load Kernel
; -----------------------------------
%include "load_floppy.inc"

; -----------------------------------
; Print a message
; -----------------------------------
%include "message.inc"   <-----------------------HIER DIESE MESSAGE WIRD NICH ANGEZEIGT (ES SEI DENN ICH MACHE SIE VOR DEN FLOPPY LOAD)

; -----------------------------------
; Setup GDT
; -----------------------------------
lgdt [gdt]

; -----------------------------------
; Enter Protected Mode
; -----------------------------------
cli
mov ecx, CR0
or ecx, 1
mov CR0, ecx

db 0xea ;Bitmuster für einen FAR JUMP
dw PMode ;Angabe des Offsets zu dem gesprungen werden soll
dw 0x8 ;Angabe des Selektors für das Segment zu dem gesprungen werden soll.

; -----------------------------------
; Refresh Registers
; -----------------------------------
[BITS 32]

PMode:
mov eax, 2 ;Index 2 der GDT auswählen
shl eax, 3
mov ds, ax
mov es, ax
mov ss, ax
mov eax, 0
mov fs, ax ;FS und GS auf NULL Deskriptor zeigen lassen
mov gs, ax
mov esp, 0x1FFFF ;ESP setzen

; -----------------------------------
; Jump to the Kernel
; -----------------------------------
jmp dword 8:0x10000

%include "gdt.inc"
%include "a20gate.inc"

bootdrv db 0
loadmsg db "Loading ClusterOS...",13,10,0

TIMES 510-($-$$) DB 0
SIGNATURE DW 0xAA55


load_floppy.inc:

_disk_reset:
; Diskdrive reset (Interrupt 13h, 0)
push ds            ; Sichere DS
mov ax, 0          ; Die gewünschte Funktion (reset)
mov dl, [bootdrv]
int 13h            ; Den Interrupt ausführen
pop ds             ; DS wiederherstellen
jc _disk_reset            ; Geht nicht? -> Noch mal!

; ------------------------------------------------
; kernel
; ------------------------------------------------
_loadkernel:

mov ax,0x1000      ; ES:BX = 10000
mov es,ax
mov bx, 0

mov al, 18 ; num of sectors
mov cx, 2 ; cylinder + start sector
mov dh, 0 ; head

; Read Sectors( Int 0x13, 2 )
mov dl, [bootdrv]
mov ah, 2
int 0x13  

jc _loadkernel


_loadprogramfiles:
; ------------------------------------------------
; command
; ------------------------------------------------
_loadprogramfiles_1:
mov ax,0x5200      ; ES:BX = 52000
mov es,ax
mov bx, 0

mov al, 18 ; num of sectors
mov cx, 2 ; cylinder + start sector
mov dh, 1 ; head

; Read Sectors( Int 0x13, 2 )
mov dl, [bootdrv]
mov ah, 2
int 0x13  

jc _loadprogramfiles_1        ; Fehler? Noch mal!

; ------------------------------------------------
; info
; ------------------------------------------------
_loadprogramfiles_2:
mov ax,0x5300      ; ES:BX = 53000
mov es,ax
mov bx, 0

mov al, 18 ; num of sectors
mov cx, 5 ; cylinder + start sector
mov dh, 1 ; head

; Read Sectors( Int 0x13, 2 )
mov dl, [bootdrv]
mov ah, 2
int 0x13  

jc _loadprogramfiles_2        ; Fehler? Noch mal!

_load_end:

; deactivate floppy-motor
mov dx,0x3F2
mov al,0x0C
out dx,al


message.inc

mov si,loadmsg

putstr:
lodsb             ; Byte laden
or al,al
jz short putstrd  ; 0-Byte? -> Ende!

mov ah,0x0E       ; Funktion 0x0E
mov bx,0x0007     ; Attribut-Byte (wird nicht benötigt)
int 0x10          ; schreiben
jmp putstr        ; Nächstes Byte

putstrd:


gdt.inc

gdt_start:
dd 0 ;Ein DWORD mit dem Wert 0
dd 0 ;Ein DWORD mit dem Wert 0

FLAT_CODE: ; 1
dw 0xFFFFF
dw 0x0
db 0x0
db 9Ah
db 0CFh
db 0

FLAT_DATA: ; 2
dw 0xFFFFF
dw 0x0
db 0x0
db 92h
db 0CFh
db 0

gdt:
dw gdt - gdt_start - 1
dd gdt_start


a20gate.inc habe ich von einen andren projekt rauskopiert.
steht nur code drinne der den a20 aktiviert.
sollte also nix falsche drinnen sein.


;;
;; enableA20.s (adapted from Visopsys OS-loader)
;;
;; Copyright (c) 2000, J. Andrew McLaughlin
;; You're free to use this code in any manner you like, as long as this
;; notice is included (and you give credit where it is due), and as long
;; as you understand and accept that it comes with NO WARRANTY OF ANY KIND.
;; Contact me at jamesamc@yahoo.com about any bugs or problems.
;;

enableA20:
;; This subroutine will enable the A20 address line in the keyboard
;; controller.  Takes no arguments.  Returns 0 in EAX on success,
;; -1 on failure.  Written for use in 16-bit code, see lines marked
;; with 32-BIT for use in 32-bit code.

pusha

;; Make sure interrupts are disabled
cli

;; Keep a counter so that we can make up to 5 attempts to turn
;; on A20 if necessary
mov CX, 5

.startAttempt1:
;; Wait for the controller to be ready for a command
.commandWait1:
xor AX, AX
in AL, 64h
bt AX, 1
jc .commandWait1

;; Tell the controller we want to read the current status.
;; Send the command D0h: read output port.
mov AL, 0D0h
out 64h, AL

;; Wait for the controller to be ready with a byte of data
.dataWait1:
xor AX, AX
in AL, 64h
bt AX, 0
jnc .dataWait1

;; Read the current port status from port 60h
xor AX, AX
in AL, 60h

;; Save the current value of (E)AX
push AX; 16-BIT
;; push EAX; 32-BIT

;; Wait for the controller to be ready for a command
.commandWait2:
in AL, 64h
bt AX, 1
jc .commandWait2

;; Tell the controller we want to write the status byte again
mov AL, 0D1h
out 64h, AL

;; Wait for the controller to be ready for the data
.commandWait3:
xor AX, AX
in AL, 64h
bt AX, 1
jc .commandWait3

;; Write the new value to port 60h.  Remember we saved the old
;; value on the stack
pop AX; 16-BIT
;; pop EAX; 32-BIT

;; Turn on the A20 enable bit
or AL, 00000010b
out 60h, AL

;; Finally, we will attempt to read back the A20 status
;; to ensure it was enabled.

;; Wait for the controller to be ready for a command
.commandWait4:
xor AX, AX
in AL, 64h
bt AX, 1
jc .commandWait4

;; Send the command D0h: read output port.
mov AL, 0D0h
out 64h, AL

;; Wait for the controller to be ready with a byte of data
.dataWait2:
xor AX, AX
in AL, 64h
bt AX, 0
jnc .dataWait2

;; Read the current port status from port 60h
xor AX, AX
in AL, 60h

;; Is A20 enabled?
bt AX, 1

;; Check the result.  If carry is on, A20 is on.
jc .success

;; Should we retry the operation?  If the counter value in ECX
;; has not reached zero, we will retry
loop .startAttempt1


;; Well, our initial attempt to set A20 has failed.  Now we will
;; try a backup method (which is supposedly not supported on many
;; chipsets, but which seems to be the only method that works on
;; other chipsets).


;; Keep a counter so that we can make up to 5 attempts to turn
;; on A20 if necessary
mov CX, 5

.startAttempt2:
;; Wait for the keyboard to be ready for another command
.commandWait6:
xor AX, AX
in AL, 64h
bt AX, 1
jc .commandWait6

;; Tell the controller we want to turn on A20
mov AL, 0DFh
out 64h, AL

;; Again, we will attempt to read back the A20 status
;; to ensure it was enabled.

;; Wait for the controller to be ready for a command
.commandWait7:
xor AX, AX
in AL, 64h
bt AX, 1
jc .commandWait7

;; Send the command D0h: read output port.
mov AL, 0D0h
out 64h, AL

;; Wait for the controller to be ready with a byte of data
.dataWait3:
xor AX, AX
in AL, 64h
bt AX, 0
jnc .dataWait3

;; Read the current port status from port 60h
xor AX, AX
in AL, 60h

;; Is A20 enabled?
bt AX, 1

;; Check the result.  If carry is on, A20 is on, but we might warn
;; that we had to use this alternate method
jc .warn

;; Should we retry the operation?  If the counter value in ECX
;; has not reached zero, we will retry
loop .startAttempt2


;; OK, we weren't able to set the A20 address line.  Do you want
;; to put an error message here?
jmp .fail


.warn:
;; Here you may or may not want to print a warning message about
;; the fact that we had to use the nonstandard alternate enabling
;; method

.success:
sti
popa
xor EAX, EAX
ret

.fail:
sti
popa
mov EAX, -1
ret
4
Lowlevel-Coding / Floppy auf echtem PC lesen
« am: 16. September 2005, 20:56 »
nein die bereiche die sich überschneiden machen da kein problem
sie sind im moment noch sehr klein... ausserdem gehts ja bei
bochs einbandfrei.

und so weit ich das sehe ist das problem, das der pc irgentwo während
diesen Lese-Codes einfriert.

falls es wirklich jemanden interressiert:
das was nach 0x10000 geladen wird ist der kernel und die andren beiden
teile sind kleine testprogramme.
und wie gesagt wenn man nur den kernel läd dann gehts!

danke für den hinweis mit den überschneidungen, hoffe es gibt noch mehr ideen
5
Lowlevel-Coding / Floppy auf echtem PC lesen
« am: 15. September 2005, 14:23 »
hat keiner ne lösung ??

oder wenigstens ein quellcode in dem
mehr als einmal etwas mit dem BIOS
von der floppy gelesen wird ?
6
Lowlevel-Coding / Floppy auf echtem PC lesen
« am: 14. September 2005, 14:07 »
erstmal danke für die motor geschichte...

hatte den code als erstes nich gepostet weil is bisl lang aber wenns anders nicht geht... bitte schön:


_disk_reset:
; Diskdrive reset (Interrupt 13h, 0)
push ds            ; Sichere DS
mov ax, 0          ; Die gewünschte Funktion (reset)
mov dl, [bootdrv]
int 13h            ; Den Interrupt ausführen
pop ds             ; DS wiederherstellen
jc _disk_reset            ; Geht nicht? -> Noch mal!

; ------------------------------------------------
; kernel
; ------------------------------------------------
_loadkernel:

mov ax,0x1000      ; ES:BX = 10000
mov es,ax
mov bx, 0

mov al, 18 ; num of sectors
mov cx, 2 ; cylinder + start sector
mov dh, 0 ; head

; Read Sectors( Int 0x13, 2 )
mov dl, [bootdrv]
mov ah, 2
int 0x13  

jc _loadkernel


_loadprogramfiles:
; ------------------------------------------------
; command
; ------------------------------------------------
_loadprogramfiles_1:
mov ax,0x5200      ; ES:BX = 52000
mov es,ax
mov bx, 0

mov al, 18 ; num of sectors
mov cx, 2 ; cylinder + start sector
mov dh, 1 ; head

; Read Sectors( Int 0x13, 2 )
mov dl, [bootdrv]
mov ah, 2
int 0x13  

jc _loadprogramfiles_1        ; Fehler? Noch mal!

; ------------------------------------------------
; info
; ------------------------------------------------
_loadprogramfiles_2:
mov ax,0x5300      ; ES:BX = 53000
mov es,ax
mov bx, 0

mov al, 18 ; num of sectors
mov cx, 5 ; cylinder + start sector
mov dh, 1 ; head

; Read Sectors( Int 0x13, 2 )
mov dl, [bootdrv]
mov ah, 2
int 0x13  

jc _loadprogramfiles_2        ; Fehler? Noch mal!

_load_end:


wobei in bootdrv die richtige zahl liegt ... hat ja funktioniert wenn nur der
kernel geladen wird
7
Lowlevel-Coding / Floppy auf echtem PC lesen
« am: 14. September 2005, 13:44 »
Hi,

ich schreibe grad bisl ein OS und teste das immer mit bochs.
jetzt habe ich es mal endlich auf ne richtige floppy getan und
es geht nicht.
liegt wahrscheinlich an meinen floppy-read-code.
da lese ich nich, wie in allen beispielen im internet, nur einmal
sondern 3 mal.

sieht dann so aus:
- int13, 00 -> reseten
- 3x int13, 02 -> Sektoren in Memory lesen

wenn ich nur einen int13,02 mache dann geht es (bzw es geht soweit
es soll, weil die andren daten ja auch gebraucht werden).
die parameter scheinen ja auch richtig zu sein da es mit bochs funzt.
hab auch schon probiert vor jeden int13,02 zu reseten -> geht nich

hoffe jemand kann mir damit helfen !

und nochwas: ich würde ganz gerne, dass nach dem lesen das disketten-
licht wieder ausgeht... falls da jemand knowhow hat..

naja schon ma danke im vorraus
8
OS-Design / dynamisch allokierbarer Speicher
« am: 06. March 2004, 13:38 »
Wie dumm!! wieso kann ich nich meine alte post editieren ? Kann man das vielleicht ändern ?

hab mich verschrieben .. nicht sehen sondern stehen
9
OS-Design / dynamisch allokierbarer Speicher
« am: 06. March 2004, 13:37 »
Also wie viel Speicher du denen gibst, hängt ja wohl davon ab wie viel sie brauchen...

dynamisch alokierbar is doch, das der speicher irgentwo im speicher sehen kann ne ?

also wenn dass das is, dann würde ich das für sinnlos halten, weil man das nur bei systemen mit multitasking benutzen sollte (meiner meinung nach). Kommt aber auch auf das Programm an:Wenn das die ganze zeit irgentwelche bilder oder so in den Speicher lädt und wieder weg lädt dann wäre die dynamische methode natürlich sehr wichtig.
10
Das Wiki / Inhalte für nächstes Magazin
« am: 06. March 2004, 13:32 »
@TeeJay: Kann man denn nicht einen anderen Compiler als gcc benutzen.

Also ich hab bis jez immer den von digitalMars benutzt. Allerdings muss ich sagen, dass es möglicherweise an ihm liegt, das ich z.B. zu dumm bin in den ProtectedMode zu kommen ... naja keine Ahnung wie der so geeignet is.

Aber im RealMode hat der mir ganz gute Dienste geleistet
11
Das Wiki / download area
« am: 04. March 2004, 15:38 »
Also es gibt so nen webhost der scheint ganz okay zu sein.
hab mich da angemeldet nur find ich leider auf der site keinerlei angaben über den host.

ich glaub der space war gross genug .. bei traffic limit und dateigrössen(glaub da gibts aba kein prob mit) die man uploaden kann hab ich keine ahnung

www.iconrate.com

falls jemand die infos findet, dann kann er ja mal hier posten ...

falls jemand nen guten host kennt solll er es auch sagen. denn ich denke keiner freut sich über die gesplitteten 400kb päckchen im resource center (ausser vielleich leute mit modem denen die ganze zeit die connecten kappt).
12
Lowlevel-Coding / Nasm-tut
« am: 03. March 2004, 22:01 »
bei asm muss man echt nicht viel wissen ... nur so n paar grundbefehle und die theorie ... bei der theorie(also CPU kram) hilft dir praxis aber nicht.

Mir is grad eingefallen das ich noch n tut über ASM hab.
Die Befehle sind auch für NASM kompatibel ... aber da gibts eh keine Progs zum abschreiben drinne und deswegen eh egal :)

Das Tut is voll klein aba da werden die grundlegensten dinge schnell erklärt

Weiss nich wie gut das is aba geh ma gucken bei www.neq.de.vu
13
Das Wiki / download area
« am: 03. March 2004, 14:21 »
oh fuck !!!

ich hab mich da grad angemeldet und mal das faq gelesen:

Max 400KB je Datei
kein PHP,ASP,MySQL usw.

das kann man ja nichtma für download area richtig benutzen :(

Bis jez kannte ich eigentlich nur tripod ... kennt jemand noch andere site mit free webspace ?
14
Lowlevel-Coding / Nasm-tut
« am: 03. March 2004, 14:09 »
wenn du asm mit nasm lernen willst, dann solltest du sowieso mit os coden anfangen.
ich weiss nicht wieviel vorkenntnisse man dafür braucht aber im prinzip kannst du die erste ausgabe von lowlevel mal probieren.

falls du dafür einfach zu wenig vorkenntnisse hast dann guck mal bei robsite.de
da findet man eigentlich zu allem irgentwas... bestimmt auch zu assembler !

Du kannst ja auch tutorials lesen die nicht für nasm sind um dir einfach die vorkenntnisse zu verschaffen und dann dein wissen an der ersten ausgabe von lowlevel austesten.
15
Das Wiki / Inhalte für nächstes Magazin
« am: 03. March 2004, 14:03 »
krass, das is ja im gegensatz zu den anderen tuts bei lowlevel schon riesig !

wie wärs denn wenn ihr allgemein ale tuts wo viel code ist ind den resourcecenter packt, da man dann nicht immer alle lowlevelzeitschriften durchsuchen muss , wo denn jez genau der code war den man sucht. Momentan, da es erst 5 ausgaben gibt, ist das ja noch überschaubar. aber später wäre das echt eine grosse hilfe.
Also ein naschlagewerk für OSdevelopment
16
Das Wiki / download area
« am: 03. March 2004, 13:57 »
ach so ... da gibts gar kein php ?
dann wär das ja echt nur für downloads gut ... ohne php ist der entwicklungs aufwand um ne umfangreiche seite zu machen meistens viel höher :(
17
Das Wiki / Inhalte für nächstes Magazin
« am: 02. March 2004, 23:41 »
ja auf das pm-tut freu ich mich schon .. könntest du das vielleicht wenn es brauchbar ist in den resource center tun damit  nicht auf die nächste ausgabe von lowlevel warten müssen?

das mit dem paging ist doch super kompliziert... so weit ich weiss.
glaub nicht dass das in das anfänger tut kommen sollte ... weiss aber nicht egnau (das letzte mal wo ich mich ausgiebig mit OSdevelopment beschäftigt hab is shon omnate her)
18
Das Wiki / download area
« am: 02. March 2004, 23:35 »
coole sache.. is ja tausendma besser als lycos ... wieviel werbung gibta da denn so ?
19
OS-Design / Protected Mode
« am: 02. March 2004, 13:33 »
aso... aber kann man nicht einfach nasm auf das jeweilige OS portieren ... so würde man doch um die programmierung eines Assemblers herumkommen oder?

(hab mich noch nie so richtig mit nasm source ausseinander gesetzt . aba ich glaub das is doch n ganz normales c proggi)
20
Offtopic / lowlevel Promotion ?
« am: 02. March 2004, 13:27 »
jaja .. (is manchmal ja ganz lustig, nervt aber wenn man wirklich was wissen will)
Seiten: [1] 2 3

Einloggen