2017-10-15 4 views
-1

Ich muss einige grundlegende (. Bas) Dateien aus meinem Bootloader laden.Wie lade ich .BAS-Dateien von einem Assembly-Betriebssystem

Mein Bootloader ist sehr einfach, und alles, was er tun soll, ist Text anzuzeigen und eine .bas-Datei in den Speicher zu laden und auszuführen.

(I bis zur Montage sehr neu sind und nicht vollständig versteht es noch nicht, so dass Sie einige Dinge erklären könnten müssen.)

Hier ist mein einfacher Code so weit (alle es tut, sind, den Text anzuzeigen .):

BITS 16 

start: 
    mov ax, 07C0h  
    add ax, 288  
    mov ss, ax 
    mov sp, 4096 

    mov ax, 07C0h  
    mov ds, ax 


    mov si, text_string 
    call print_string 

    jmp $   


    text_string db 'MyOS BootLoader...', 10, 13 
       db 'Looking For Kernel..., 10, 13 




    ; *** INSERT .BAS LOADING CODE HERE :D *** 

print_string:   
    mov ah, 0Eh  

.repeat: 
    lodsb   
    cmp al, 0 
    je .done   
    int 10h   
    jmp .repeat 

.done: 
    ret 


    times 510-($-$$) db 0 
    dw 0xAA55  

)

(Of MikeOS von Mike Saunders Mein Code basiert (here gefunden) ich würde mich freuen, wenn mir jemand helfen könnte. :)

+3

Diese Frage ist es zu breit. Müssen Sie es aus einem Dateisystem lesen? Welches Dateisystem oder werden Sie die BAS-Dateien in bestimmten Sektoren ohne Dateisystem ablegen? Wahrscheinlich werden Sie nicht all diesen Code in den Boot-Sektor passen. –

Antwort

0

Mein Bootloader ist sehr einfach, und alle es soll tun, einen Text anzeigen und eine BA-Datei in den Speicher laden und ausführen.

Dies ist schwieriger als Sie denken. Das Ausführen eines BASIC-Programms erfordert einen Interpreter. Wenn Sie sich nicht auf einem echten IBM-PC mit BASIC im ROM befinden (was seit den 1980er Jahren kein Problem mehr war), müssen Sie einen Interpreter in Ihren Bootsektor aufnehmen. (Was nicht passt.)

Betrachten Sie eine andere Art von ausführbaren Datei laden - wie eine COM-Datei.

+0

Interessant. MikeOS hat es dann irgendwie geschafft ... – Gigatero

+0

Obwohl ich eine Menge Hilfe gefunden habe, als ich '.com' anstelle von '.bas' verwendet habe – Gigatero

+3

@Gigatero MikeOS enthält einen BASIC-Interpreter. Es macht rund 4200 Zeilen Code aus - etwas weniger als die Hälfte der gesamten MikeOS-Codebasis. – duskwuff

Verwandte Themen