Autor Thema: BOCHS bootet mein os der PC aber nicht :-(  (Gelesen 12742 mal)

noob

  • Beiträge: 63
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 26. April 2006, 16:10 »
@scales of justice koenntest du mir bidde bidde mal deinen asm code schicken damit ich mir das mal angucken kann??? meine mail add: badhazelnoot at gmail dot com

noob

  • Beiträge: 63
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 26. April 2006, 18:24 »
hi!

hab nun den code etwas abgeaendert... nun kommt vom bochs her kein fehler mehr auch die aufloesung der logischen sektor nummer musste nun 100% funktionieren nur mit dem hineinspringen in den kernel hats noch was dass funkt nicht bochs bleibt einfach stehen...

der code
org 0x7c00

KERNEL_SIZE equ 76
KERNEL_SEGMENT equ 0x1000
KERNEL_START equ 1


%define   LOOPS_1       bp-2
%define   CYLINDER   bp-4
%define   HEADS      bp-6
%define   SECTORZ     bp-8
%define   LOGICAL    bp-10
%define BUFFER      bp-12

SUB sp, 12

CLI                    
XOR ax, ax
MOV ss, ax
MOV sp, 0x7c00
MOV ds, ax
STI  

MOV ax, KERNEL_SEGMENT
MOV es, ax
XOR bx, bx

MOV cx, KERNEL_SIZE
MOV [LOOPS_1], cx

MOV ax, 1           ;start at sector2
MOV [LOGICAL], ax
MOV [SECTORZ], ax

main_loop:
    MOV [LOOPS_1], cx       ;take the loopvar to the logical sector number

    MOV ax, [LOGICAL]   ;Cylinder
    MOV bx, 36
    MOV dx, 0
    DIV bx
    MOV [CYLINDER], ax

    MOV dx, 18        ;set TRACK 0 if TRACK is 18 is null
    CMP dx, [SECTORZ]
    JE  set_null

fail:
   
    ;read the sector
    MOV ax, KERNEL_SEGMENT
    ADD bx, 512
    MOV ah, 2
    MOV al, 1
    MOV ch, [CYLINDER]
    MOV cl, [SECTORZ]
    MOV dx, 0
    INT 0x13
    JC  fail

    MOV cx, [LOOPS_1]
    MOV al, 1
    ADD [LOGICAL], al
    ADD [SECTORZ], al

    LOOP main_loop;

JMP KERNEL_SEGMENT:0x0000

set_null
    MOV ah, 0x0e
    MOV al, '.'
    MOV bx, 0x0004
    INT 0x10
    MOV dx, 1
    MOV [SECTORZ], dx
JMP fail


aber warum springt er mir nicht in den kernel? ps head wird bei meinem os sowieso nie auf 1 kommen...(da sonst kein platz mehr fuer mein fs waere!!!)

ps: waenn ich mir bochsout.txt ansehe dann kommt sicher einige hundertmale:
00010167905e[CPU0 ] CALL_Ad: offset outside of CS limits an dem wirds wohl liegen... aber wie krieg ich das raus?

noob

  • Beiträge: 63
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 26. April 2006, 20:12 »
hi! ich habs nun so hingebracht dass mir der bochs keine einzige fehlermeldung mer wirft!

das eine problem is nur dass nichts ausgefuehrt wird...(der fehler war der dass bei mir der offset gleich bei 512 angefangen hat dass hab ich nun geaendert nun gibt es eben keine fehler mehr aber booten tut die kacke auch noch immer nich :-((()

[BITS 16]
[ORG 0x7C00]

KERNEL_SIZE equ 76
KERNEL_SEGMENT equ 0x1000
KERNEL_START equ 1

%define   LOOPS_1       bp-2
%define   CYLINDER   bp-4
%define   offs      bp-6
%define   SECTORZ     bp-8
%define   LOGICAL    bp-10
%define seg      bp-12

SUB sp, 12

CLI                    
XOR ax, ax
MOV ss, ax
MOV sp, 0x7C00
MOV ds, ax
STI  

MOV ax, KERNEL_SEGMENT
MOV es, ax
MOV [seg], ax
MOV bx, 0
MOV [offs], bx

MOV cx, KERNEL_SIZE
MOV [LOOPS_1], cx

MOV ax, 1           ;start at sector2
MOV [LOGICAL], ax
MOV [SECTORZ], ax

main_loop:
    MOV [LOOPS_1], cx       ;take the loopvar to the logical sector number

    MOV ax, [LOGICAL]   ;Cylinder
    MOV bx, 36
    MOV dx, 0
    DIV bx
    MOV [CYLINDER], ax

    MOV dx, 18        ;set TRACK 0 if TRACK is 18 is null
    CMP dx, [SECTORZ]
    JE  set_null

fail:
   
    ;read the sector
    MOV ax, [seg] ;<--- hier addiere ich nun immer 32 dazu!!(waenn ich das nicht tue veraendert sich auch nichts)
    MOV bx, [offs] ;<--- hier war der fehler
    MOV ah, 2
    MOV al, 1
    MOV ch, [CYLINDER]
    MOV cl, [SECTORZ]
    MOV dx, 0
    INT 0x13
    JC  fail

    MOV cx, [LOOPS_1]
    MOV al, 1
    ADD [LOGICAL], al
    ADD [SECTORZ], al
    MOV al, 32
    ;ADD [seg], al
    MOV ax, 512
    ADD [offs], al

    LOOP main_loop;

JMP KERNEL_SEGMENT:0x0000

set_null
    mov ah, 0x0e
   mov al, '.'
   mov bx, 0x0004
   int 0x10
    MOV dx, 1
    MOV [SECTORZ], dx
JMP fail


 

Einloggen