2009-06-02 6 views
1

Ich habe einen SIC-Assembler programmiert und alles scheint gut zu funktionieren, außer dem I/O-Aspekt.SIC Assembler I/O

Ich habe den Objektcode in den Speicher geladen (konvertiert Char Format in Maschinendarstellung), aber wenn ich SICRun() aufrufen; Um den Code auszuführen, erhalte ich die Fehlermeldung "devf1 kann nicht gefunden werden".

Ich weiß, dass dies mit den Anweisungen des Eingabe/Ausgabe-Geräts im Quellcode zusammenhängt.
Die c-Datei besagt, dass es von externen Dateien abhängt, vor allem Dev [6]. Soll ich das selbst schaffen? Mein Lehrer hat uns keine anderen Dateien zur Bearbeitung gegeben. Irgendeine Einsicht?

Beispiel: TD-Ausgang; TEST OUTPUT DEVICE

This Verzeichnis den Quellcode enthält (source.asm), Header-Datei (sic.h) und der SIC-Simulator (sicengine.c)

Antwort

3

Von der sicengine.c Quelldatei sieht es aus, als ob die devf1 (auch dev2/dev3) Datei erwartet wird, so diese ‚Eingabegerät‘ bestehen aus gelesen werden (fopen wird "r" als Parameter übergeben):

if (opcode == 216) { /* RD */ 
    /* ... */ 
    if ((Dev[Devcode] = fopen(SICFile[Devcode],"r")) == NULL) { 
     printf("cannot open file %s\n", SICFile[Devcode]); 
     exit(1); 
    } 

Der Kommentar im Code über abhängig von Datei Dev[6] ist mehrdeutig. Es bedeutet wirklich die Namen der Dateien im Array Dev, die devf1, devf2 und devf3 (Eingabegeräte) und devf04, devf05 und devf05 (Ausgabegeräte) sind.

Ich würde vorschlagen, Dateien devf1, devf1 und devf3 zu erstellen.

+0

Perfekt! Das hat funktioniert. –