Programmierung

Datei lesen mit EASy68K

Mittlerweile habe ich in EASy68K auch ein kleines Programm geschrieben, dass mir eine Datei ausliest und den Inhalt in die Konsole schreibt. Momentan sieht dieses Programm so aus:

;-----------------------------------------------------------
; Title      :
; Written by :
; Date       :
; Description:
;-----------------------------------------------------------
    ORG    $1000
START:                  ; first instruction of program
 
; Put program code here
 
    ; Die Datei 'test1.txt' oeffnen
    LEA     FILENAME,A1
    MOVE    #51,D0
    TRAP    #15
 
    ; Den Inhalt der Datei lesen
    CLR     D2
    LEA     BUFFER,A1       ; Daten sollen in BUFFER gespeichert werden
    MOVE.L  #20,D2          ; Anzahl der Bytes, die gelesen werden sollen
    MOVE    #53,D0          ; lese Datei
    TRAP    #15
 
    ; Schliessen aller Dateien
    MOVE    #50,D0
    TRAP    #15
 
    ; Inhalt der Datei ausgeben
    LEA     BUFFER,A1
    MOVE.B  #14,D0
    TRAP    #15
 
    ; Halt simulator
    MOVE.B  #9,D0
    TRAP    #15
 
; Put variables and constants here
FILENAME    DC.B        'test1.txt',0
BUFFER      DS.B        20
 
    END    START        ; last line of source

Momentan deswegen, weil dieses Programm noch einen kleinen Schönheitsfehler hat. Ich hatte eine Textdatei (test1.txt), die einfach nur den Inhalt

1 2 3 4 5

hatte. Doch beim Versuch, diese Datei mittels des obigen Programms zu lesen, kam folgendes heraus:
easy68k-read-file-not-nulled

Dazu kam, dass der Simulator abschmiert. Das Problem hierbei war, dass der Text erfolgreich eingelesen worden ist, aber nicht wirklich nicht einem NULL-Zeichen endete. Darum habe ich mal einen HexEditor genommen und die Datei so verändert, dass die Datei mit einem NULL-Zeichen endet.

easy68k-read-file-hex-editor

Nach einem neuen Versuch, das Programm zum Laufen zu bekommen, kam dann auch das gewünschte Ergebnis:
easy68k-read-file-nulled

Ein Gedanke zu „Datei lesen mit EASy68K

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.