PrettyOS um Rechner erweitern



  • Hi!
    Ich habe deinem Tutorial gefolgt, echt super.
    Ein paar eigene Befehle noch hinzugefügt.
    So, direkt 2 Fragen:
    1. Kann ich in die Strings Zeilenumbrüche machen?

    badcommand db 'Unbekannter Befehl.[Zeilenumbruch] Siehe "commands" fuer eine Befehlsliste.', 0x0D, 0x0A, 0 ;und hier hätte ich
                                         ;gerne einen Zeilenumbruch
    msg_help db 'TessOS Hilfethemen: 1. Befehle 2. Emulation auf dem Computer 3. xy ...', 0x0D, 0x0A, 0   ;und hier hätte ich gerne
                                         ;Zeilenumbrüche ;-)
    

    2. Was wäre mit einer Art Rechner? Einfach als Befehl:
    Entweder direkt so:
    5+2
    oder so:
    5
    +
    2
    Natürlich erstmal einfaches (+-, evtl */)



  • ich hab mich mal registriert, also kettenfresser = lmb = kettenfresser 😉


  • Mod

    Ich habe deinem Tutorial gefolgt, echt super.

    Danke für das positive Feedback! Freut mich, wenn alles klappt.

    2. Was wäre mit einer Art Rechner? Einfach als Befehl:
    Entweder direkt so:
    5+2
    oder so:
    5
    +
    2
    Natürlich erstmal einfaches (+-, evtl */)

    Im Real Mode Teil kann man sicher eine Menge machen. Nur zu!
    Poste es hier rein, wenn es gut ist. Wir können so etwas auch gerne im Tutorial Teil 1 im Nebenweg (z.B. als Aufgabe mit Lösung) anbieten.



  • Das geht also im Real Mode, das ist schon mal gut (der Protected Mode geht bei mir irgendwie nicht, aber nicht so schlimm ;-))
    Kann ich das in C machen, wenn ja, wie wird das eingefügt?
    ich würde das progrämmchen dann schon gerne als einzelne Datei haben, später wird sie included (der übersicht halber).
    ich brauch eigentlich nur grundsteine, da ich nicht viel asm kann, nur c

    EDIT:
    Mist, jetzt geht irgendwie nixx mehr...
    ich habe gerade wieder meine batch datei aufgerufen, zum kompilieren.
    jetzt wird statt das die bin datei ersetzt wird, die bin datei gelöscht.
    weitere versuche: erfolgslos.
    code der batch (kernelbin.bat):
    nasm kernel.asm -f bin -o kernel.bin

    hat alles vorher funktioniert, es kann weder an der bat noch an der nasm.exe liegen 😞


  • Mod

    Geduld! OSDEV ist keine Kleinigkeit. Da braucht es gute Nerven und Fingerspitzengefühl. 😉 Verwende besser make (binutils) und makefile. Das ist professioneller als Batch-Dateien. Wenn Du willst, das wir Dir helfen, musst Du den Fehler möglichst exakt beschreiben unter Angabe aller Schritte und Tools.

    der Protected Mode geht bei mir irgendwie nicht

    Damit kann niemand etwas anfangen, nicht einmal Du selbst. 🙂



  • ich weiss gar nicht wo der fehler liegt 😞
    ich kann nur sagen, dass es irgendwann nicht mehr funktionierte
    morgen probier ich mal makefile aus.

    wie siehts mit dem rechner aus?
    welcher lösungsansatz ist besser?
    oder doch besser:
    befehl: calc
    addition, subtraktion, multiplikation oder division? (+, -, *, /)
    1. summandt/faktor etc.
    2. summandt/faktor etc.
    lösung wird ausgegeben

    zum pm:
    stimmt! aber ich glaube, der ist mir auch nicht wichtig 😉
    und wie ich das verstanden habe, kann man im rm mehr machen 😕


  • Mod

    und wie ich das verstanden habe, kann man im RM mehr machen

    Dort hast Du noch das BIOS mit seinen Funktionen zur Verfügung, im PM bist Du auf Dich alleine gestellt.

    Normalerweise baut man Parser für mathematische Formeln.
    http://www.rzbt.haw-hamburg.de/dnksoft/parser/

    Du kannst das aber ebenso wie von Dir vorgeschlagen realisieren.



  • es kommt immer diese meldung:

    D:\TessOS>nasm kernel.asm -f bin -o kernel.bin
    kernel.asm:24: error: symbol cmd_help' undefined kernel.asm:26: error: symbolloop.help' undefined
    kernel.asm:31: error: symbol `loop.help' undefined
    kernel.asm:162: error: phase error detected at end of assembly.

    wenn ich es per batch mache



  • Those cmd_* are defined at the end of your file.

    cmd_help db 'help', 0
    

    Did you do:

    loop:
    
    etc
    
    .help:
        etc
    

    you are missing .help.

    /// PHPnerd



  • danke, jetzt klappt wenigstens das 😉
    thanks, now it works 😉

    aber diese meldung kommt noch beim starten (schon immer, habe ich immer übersprungen)
    but this error is at the start of bochs:

    pci called in register_pci_handlers stub. you must not have loaded the pci plugin

    ich kann aber nixx mit pci im code finden
    but i can't find anything with pci

    my next question:
    how can i include c-programmes
    i can write a calculator in c, no problem
    but how can i start it from a command?



  • lmb schrieb:

    aber diese meldung kommt noch beim starten (schon immer, habe ich immer übersprungen)
    pci called in register_pci_handlers stub. you must not have loaded the pci plugin

    Bei Sourceforge kannst du dir auch ältere Bochs-Versionen holen, afair klappts mit 2.2.6.



  • aber warum klappts denn nicht damit? der code ist doch korrekt?!
    edit:
    nun kommt beim kompilieren folgende meldung:
    kernel.asm:177: error: TIMES value -22 is negative



  • Lol, I am able to understand German, you can write your own messages in German, no problem.

    Loading programs is far far away. First, make a kernel (Protected Mode) go work on basic kernel, memory manager, multitasker, and then write disk drievrs and file system drivers. SO you can read a file from a disk. Then you have to make some syscalls and compile newlib. Compile a program with you own newlib. Write code for executing processes, and run your program.

    I already said: far far away. It's a long long way, os development.

    // PHPnerd



  • filemanager etc. sind doch gar nicht nötig, oder? multitasking brauche ich doch auch nicht unbedingt.
    was bringt mir der pm?
    klar, es ist ein langer weg, aber ich habe auch nur begrenzt zeit (schüler).
    kann man denn den rechner nicht auch in die kernel datei mit einfügen?
    was ist mit den fehlermeldungen?



  • lmb schrieb:

    nun kommt beim kompilieren folgende meldung:
    kernel.asm:177: error: TIMES value -22 is negative

    Ich glaube, bei den späteren Sachen ist dieses "times bla bla" am Ende der Datei nicht mehr da. Schau mal in Erhards zips rein oder hast du genau diese kompiliert?



  • doch, bei der zip klappt es.
    aber ich habe es eigentlich nach dem tutorial gemacht.
    hier ist meine bootsignatur:

    times 512-($-$$) hlt ; no boot signature
    


  • Und genau diese Zeile muss weg 😉



  • oh, danke!
    ich habe auch gerade geschafft, einen zeilenumbruch zu machen *freu*
    zb so:

    msg_commands db 'TessOS Befehle:', 13, 10
                 db 'hi                -   Das Betriebssystem begruesst Sie ganz herzlich', 13, 10     ; einfach die 0 weglassen
                 db 'commands          -   Zeigt diese Befehlsliste', 13, 10
                 db '? / help          -   Zeigt die Hilfethemen', 13, 10
                 db 'exit              -   Das System wird neugestartet', 13, 10, 0                    ; und am ende wieder dranfügen
    msg_exit     db 'System wird neugestartet ...', 13, 10, 0
    msg_help     db 'Hilfethemen:', 13, 10
                 db '    1. Befehle', 13, 10
                 db '       Fuer eine vollstaendige Liste geben Sie bitte "commands" ein.', 13, 10, 0
    

    Ach ja und wikipedia hat mir grad schön erklärt, wo der unterschied zwischen rm und pm ist
    richtig?
    pm = protected mode = programme kriegen nicht den vollen speicher = notwendig für multitasking
    rm = real mode = programme können auf den vollen speicher zugreifen = ungünstig für multitasking


  • Mod

    pm = protected mode = programme kriegen nicht den vollen speicher = notwendig für multitasking
    rm = real mode = programme können auf den vollen speicher zugreifen = ungünstig für multitasking

    Ja, das ist zwar etwas vereinfacht ausgedrückt, aber PM ist eine gute Voraussetzung für Multitasking. Lies Dich mal hier ein: http://www.fh-zwickau.de/doc/prmo/pmtutor/text/p_all1.htm
    Das ist eine der besten Literaturstellen für das Thema PM.

    aber ich habe es eigentlich nach dem tutorial gemacht.

    Ist im Tutorial ein Fehler oder lag es bei Dir? Wir können auch gerne im Teil 1 noch einzelne Punkte klarer heraus stellen. Mache einfach einen Änderungsvorschlag.



  • lmb schrieb:

    nun kommt beim kompilieren folgende meldung:
    kernel.asm:177: error: TIMES value -22 is negative

    Das passiert wenn in der "kernel.asm" mehr als 512 Bytes reingedrückt wurden (durch z.B. viel msg_Text). 🙂
    Entweder die Zeile streichen (in der kernel.asm ist sie unnötig, da dort nichts "gefüllt" werden muß) oder die Zahl von 512 auf 1024 o.ä. erhöhen.


Anmelden zum Antworten