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

Seiten: 1 2 [3] 4
41
Lowlevel-Coding / Segmente richtig setzen
« am: 27. March 2006, 15:03 »
also: zunächst einmal sehe ich nirgends, dass du ds initialisierst. das solltest du aber, weil auf variablen normalerweise per ds:offset zugegriffen wird. bzw aus "mov si, hello" wird im prinzip "mov si, ds:hello".

der wert im linker-script ist der abstand vom anfang des segments, in dem du dich befindest, zu der stelle, an der dein code steht.
in deinem fall befindest du dich im segment 0x1000. das heißt, dass die lineare adresse des segmentanfangs 0x10000 ist. an genau diese stelle lädst du aber auch deinen kernel. deshalb ist der oben genantne abstand gleich null , der wert im linker-script muss 0 sein.

hoffe, ich konnte helfen.

cu
  nore
42
Lowlevel-Coding / genaue groesse einer diskette
« am: 22. March 2006, 21:09 »
zunächst einmal: benutz doch eine zweite diskette. ;-)

zu chs: die diskette hat zwei heads. das sind glaub ich ober und unterseite. diese heads sind dann in tracks (spuren) eingeteilt und diese wiederum in sektoren. zwei tracks an der gleichen stelle, jedoch auf verschiedenen heads (zum beispiel track 3 von head 0 und track 3 von head 1) werden zu einem zylinder zusammengefasst.
ein track hat im normalfall 18 sektoren. da es insgesamt 2880 sektoren gibt, gibt es 160 tracks, 80 auf jedem head und somit 80 zylinder.

wir können also einen sektor mit cylinder(0-79), head(0-1) und sector(1-18) adressieren.

die andere möglichkeit der adressierung ist die logische sektornummer. hier werden einfach alle sektoren durchnumeriert. dabei fängt man bei cylinder 0, head 0 an. nach den 18 sektoren dieses tracks kommen die 18 sektoren von cylinder 0, head 1, danach cylinder 1, head 0 usw.


ich weiß, das ist teilweise etwas schlecht ausgedrückt, aber ich wollte schomal erste hilfe leisten. ;-)

normalerweise gibt es ein schönes tutorial über chs und lsn auf der lowlevel seite, aber die tutorials sind zurzeit nicht verfügbar. in dem tutorial stehen unter anderem folgende schöne formeln zur umwandlung von logischer sektornummer in cylinder head sector format:

cylinder = lsn / 36
head     = (lsn / 18) % 2
sector   = (lsn % 18) +1

hierbei ist  / eine ganzzahldivision ohne rest und % der modulo-operator (also de rest bei einer ganzzahldivision)

ich hoffe, ich konnte ein wenig helfen.

cu
  nore
43
Das Wiki / fehler? im lowlevel magazin
« am: 22. March 2006, 14:07 »
wie siehts nun mit meinem vorschlag aus? vllt mal ne stellungnahme von lowlevel seite?
44
Lowlevel-Coding / irq 6 nach floppy-zugriff über dma?
« am: 21. March 2006, 23:03 »
danke, dann werd ich das wohl auch versuchen, so ähnlich zu machen.
45
Lowlevel-Coding / irq 6 nach floppy-zugriff über dma?
« am: 21. March 2006, 16:58 »
hi, wenn ein datentransfer über den fdc mit dma zu ende ist, sollte doch normalerweise irq 6 ausgelöst werden, oder?

ich habe nämlich zurzeit das problem, dass ich nicht weiß, wann ich den diskettenmotor wieder ausstellen soll. zurzeit setzt meine isr für den irq 6 einfach nur eine variable auf 0 und meine funktion zum lesen von der diskette wartet vor dem motor-ausschalten solange bis die variable 0 ist. allerdings passiert das nie, ich komme in eine endlosschleife.

wenn ich diese abfrage einfach weglasse, schaltet die cpu anscheinend den motor aus, bevor der transfer beendet ist. unter bochs läuft diese variante. vllt weil es so langsam ist??
46
Offtopic / Tutorials
« am: 21. March 2006, 16:12 »
wer ist denn der autor des scripts?

könnte man, solange das nicht funktioniert, vielleicht einfach die links zu den dateien auf die seite schreiben?
47
tyndur / LOST Wiki
« am: 14. March 2006, 17:09 »
kurze frage: ist das wiki immer noch leer, oder bin ich nur zu dumm, um es zu bedienen?
48
das ist ja richtig.
aber für einen doublefault hast du ja möglicherweise in der idt ein interrupt gate, das code aufruft, der dich nicht erkennen lässt, dass ein doublefault ausgelöst wurde.
also könnte es sein, dass der double fault 18,2 mal pro sekunde aufgerufen wird, aber du nichts davon mitbekommst.
49
Offtopic / Hallo???
« am: 12. March 2006, 15:17 »
aber http://www.lowlevel.net.tc/forum .

coffee hatte nur ein 'l' vergessen.
50
Das Wiki / tutorial section
« am: 10. March 2006, 14:53 »
sry, hab nicht vorher im offtopic geguckt, weil ich dachte, das gehört hier rein.
51
Das Wiki / tutorial section
« am: 10. March 2006, 07:28 »
Hi, auf der seite http://lowlevel.net.tc/ unter tutorials wird nur komisches zeug angezeigt, aber nicht mehr die tutorials.
52
Das Wiki / fehler? im lowlevel magazin
« am: 28. February 2006, 15:01 »
hi,
in ausgabe 1 des magazins unter OS "Dev-Tutorial, Teil 1" steht ja ein kleiner bootloader.  auf meinem 386er, wo ich mein "OS" teste, funktioniert der aber nicht, weil der am anfang DS nicht auf 0 setzt. also hab ich oben noch die zeilen xor ax, ax
mov ds, ax
eingefügt. damit klappt es dann.

weil mir das gerade aufgefallen ist und ich hier im forum schon öfter gehört habe, dass code aus den einzelnen ausgaben des magazins nicht 100% korrekt ist, wollte ich fragen, ob solche sachen vllt nachträglich noch reineditiert werden könnten.
zum beispiel:
nachträglich hinzugefügt: DS muss auch am anfang des codes auf 0 gesetzt werden, um die variablen richtig ansprechen zu können.

oder sowas in der art eben.
53
Lowlevel-Coding / diskette mit fat12 formatieren
« am: 16. February 2006, 14:48 »
ok, ich hab das problem: bei CHS ist der erste sektor 1 und nicht 0.

ich danke euch allen für eure antworten. :)

PS: windows sieht meine so formatierte diskette zwar noch nicht als fat12 formatiert an, aber das bekomm ich schon hin. ;)
54
Lowlevel-Coding / diskette mit fat12 formatieren
« am: 15. February 2006, 20:06 »
kann sich nicht vielleicht jemand das nochmal angucken? ich hab das gefühl, ich komme echt nicht weiter... wäre euch sehr dankbar.

sry wegen doppelpost.
55
Lowlevel-Coding / diskette mit fat12 formatieren
« am: 13. February 2006, 15:21 »
danke, werd ich sofort machen und dann hier reineditieren, was bei raus kommt.

EDIT: ok, "diskreset:" funktioniert noch, der teil ab "diskformat1:" bis zum jc wird wirklich zur endlosschleife. aber woran liegt das?
56
Lowlevel-Coding / diskette mit fat12 formatieren
« am: 13. February 2006, 14:44 »
nein, das steht nicht ganz oben, es steht irgendwo mittendrin und wird auch mit jmp übersprungen. da bin ich hundertprozentig sicher, weil direkt vor "diskreset:" ein string ausgegeben werden soll und dies auch passiert.

das mit den ersten drei bytes hab ich wohl irgendwie nicht mitgekriegt, sry. aber das ist auch nicht der hauptfehler, da auf der diskette nachher noch immer das gleiche ist, wie vorher und an dieser stelle ja auch das ganze nicht mehr reagiert, d.h. ich den pc per reset-knopf neu starten muss.

btw: was muss denn in die ersten drei bytes?
57
Lowlevel-Coding / diskette mit fat12 formatieren
« am: 12. February 2006, 15:18 »
thx, werde versuchen, das irgendwie anders zu machen.

EDIT:
noch ne frage: ich muss doch dann achtzehn sektoren dahin schreiben und dann den letzten nur auf head 1, oder?

und noch eine weitere frage: gibt es das gleiche problem auch beim lesen von mehr als einem track?


EDIT2:
mit folgendem code klappts auch nicht:

diskreset:
 mov dl, 0             ; Erstes Diskettenlaufwerk
 mov ah, 0             ; Laufwerk zurücksetzen
 int 13h               ; int
 jc diskreset          ; fehler? nochmal
 diskformat1:
 mov cx, 0             ; Cylinder=0 Sektor=0
 mov dx, 0             ; erstes diskettenlaufwerk, Head=0
 mov ax, ds            
 mov es, ax            ; segment
 mov bx, format_start  ; offset
 mov ah, 3             ; sektoren schreiben
 mov al, 18            ; 18 stück
 int 13h               ; int
 jc diskformat1         ; fehler? nochmal
 diskformat2:
 inc dh                ; head=1 (sektor und cylinder immer noch 0)
 add bx, 9216          ; ...9216 byte weiter
 mov al, 1             ; einer noch
 int 13h
 jc diskformat2
58
Lowlevel-Coding / diskette mit fat12 formatieren
« am: 12. February 2006, 12:45 »
irgendwo da, wo die drei punkte sind. ;)  ich hab nur nen kleinen teil des ganzen codes gepostet, bin mir aber sicher, dass er bis diskreset kommt, weil der befehl in der zeile davor (ausgabe eines strings) noch ausgeführt wird.
wenn du möchtest, kann ich nochmal den ganzen kernel posten, aber ich denke, das ist nicht nötig.
59
Lowlevel-Coding / diskette mit fat12 formatieren
« am: 12. February 2006, 12:05 »
hi, wenn ich eine diskette mit fat12 formatieren will, muss ich doch einfach nur  den bootsektor neu schreiben und dann 18 sektoren lang nullen schreiben, oder?
das hab ich zumindest dann mal probiert mit folgendem code (die werte fpr den bootsektor habe ich aus dem FAT12-tutorial, das auf der lowlevel-tutorials-seite verlinkt ist):


format_start dw 0          ; diskettenformatierung
db 0          ; JmpBoot
db "noreos  " ; OSName
dw 0xFF       ; BystesPerSec
db 1          ; SecPerClus
dw 1          ; RsvdSecCnt
db 2          ; NumFATs
dw 224        ; RootEntCnt
dw 2880       ; TotSec
db 0xF0       ; MediaType
dw 9          ; FATSize
dw 18         ; SecPerTrack
dw 2          ; NumHeads
dd 0          ; HiddenSec
dd 0          ; TotSec32
db 0          ; DrvNum
db 0          ; Reserved
db 0x29       ; BootSig
dd 0          ; VolumeID
times 11 db 20h ; VlumeLabel
db "FAT12"
times 3 db 20h  ; FileSysType
times 448 db 0  ; Dateilänge: 512 Bytes
dw 0AA55h       ; Bootsignatur
times 9216 db 0 ;

...

 diskreset:
 mov dl, 0             ; Erstes Diskettenlaufwerk
 mov ah, 0             ; Laufwerk zurücksetzen
 int 13h               ; int
 jc diskreset          ; fehler? nochmal
 diskformat:
 mov cx, 0             ; Cylinder=0 Sektor=0
 mov dx, 0             ; erstes diskettenlaufwerk, Head=0
 mov ax, ds            
 mov es, ax            ; segment
 mov bx, format_start  ; offset
 mov ah, 3             ; sektoren schreiben
 mov al, 19            ; 19 stück
 int 13h               ; int
 jc diskformat         ; fehler? nochmal


wenn ich das ausprobiere, macht an dieser stelle das betriebssystem einfach nichts mehr. hab das problem schon ein paar wochen und echt keine ahnung, was ich falsch mache.
wie ihr seht, bin ich seit dem letzten mal nicht viel weitergekommen.
deshalb wäre ich über hilfe sehr froh.
60
Lowlevel-Coding / Kernel startet nicht
« am: 07. February 2006, 16:54 »
Zitat von: nooooooooos
Unter Windows ist /b auch nicht unbedingt nötig. Bei mir geht es reibungslos auch ohne.

Gruss
Noooooooooos

sry, wenns grad nicht zum thema passt, aber bei mir hat copy anfangs auch ohne /b funktioniert und dann auf einmal nicht mehr.
ich vermute mal, dass es nur unter speziellen bedingungen auch ohne /b funktioniert und würde deshalb empfehlen, es zu benutzen.
threads hier im forum zum thema copy:
http://www.lowlevel.brainsware.org/forum/viewtopic.php?t=1222
http://www.lowlevel.brainsware.org/forum/viewtopic.php?t=1201

beim eigentlichen problem kann ich leider nicht helfen.
Seiten: 1 2 [3] 4

Einloggen