staging.inyokaproject.org

.z80 file erstellen mit Monitorprogramm "Z80-ASM"

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Helmi

Anmeldungsdatum:
12. Mai 2023

Beiträge: 4

Hallo zusammen,

ich kann im Terminal mit dem Monitorprogramm "Z80-ASM" (näheres hier: http://wwwhomes.uni-bielefeld.de/achim/z80-asm.html) kein .z80 file erzeugen. Das Programm generiert die Fehlermeldung "no code generated" bzw. "can´t open output file" nachdem ich am prompt eingegeben habe: "z80-asm hello1.asm". Die Datei "hello1.asm" habe ich mit dem Texteditor Nano geschrieben, es handelt sich nur um zwei Zeile Code (siehe Anhang).

Im Directory /usr/local/bin befinden sich die Textdatei "hello1.asm" sowie z80-asm und z80-mon (siehe Bildschirmausdruck am Anfang).

Liegt es vielleicht daran, dass eine Schreibberechtigung benötigt wird oder habe ich einen falschen Syntax verwendet? Eine kurze Programmbeschreibung habe ich auch im Anhang beigefügt.

Leider kenne ich mich mit Linux nicht gut aus.

VG Helmi

hello1.asm (33 Bytes)
Download hello1.asm
z80-asm_1.pdf (26.9 KiB)
Download z80-asm_1.pdf
Bilder

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

Hallo!

Ohne jetzt die Anleitung gelesen zu haben: Die Fehlermeldung besagt, das es die Datei nicht gibt — Übrigens wäre es nett, wenn du Text Text bleiben lässt, da sich dann zitieren lässt. Bild ist doof, Codeblock ist gut.

Schau mal mit man z80-asm ob es da eine Konvention gibt. Meistens BEFEHL -o output oder BEFEHL --output-file.

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 1887

Hallo Helmi,

Das Verzeichnis /usr/local/bin (und eigentlich alles unter /usr) ist ein Systemverzeichnis, als normaler user hat man da keine Schreibberechtigung. Im Gegenteil, code compilieren und bearbeiten passiert im Homeverzeichnis, also das Verzeichnis unter /home/<deinuser>. Dort kannst Du auch Dateien erstellen (lassen). Mit etwas Glück kannst Du trotzdem z80-asm direkt aufrufen (ansonsten mit

/usr/local/bin/z80-asm

)

Welche Optionen Du für die Objektdateien angeben musst, gibt Dir die Dokumentation dieser Software aus.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6234

Das kürzeste Z80 Programm, das ich je gesehen habe 😇

Es wurde ja schon gesagt, dass für solche Experimente das die Verzeichnisse /usr/... und alles was darunter liegt tabu sind. Mach das in deinem Home Verzeichnis. Wegen der Übersicht könntest du dort beispielsweise ein Verzeichnis z80 anlegen.

Das Manual habe ich mir jetzt nicht angetan aber aus den Fehlermeldungen könnte man schließen dass du nur den Namen der Ausgabedatei angeben musst. Und früher hatten die immer die Dateiendung .com (unter CP/M).

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 1887

Dakuan schrieb:

Das kürzeste Z80 Programm, das ich je gesehen habe 😇

'Hello World!' in ASM wäre zu lang geworden 😀

Helmi

(Themenstarter)

Anmeldungsdatum:
12. Mai 2023

Beiträge: 4

Hallo zusammen,

hier ein Auszug aus der man Datei wie man den z80-asm aufrufen kann:

Z80-ASM 1 "18 Apr 2018" "Z80-ASM Version 2.4" "Z80 Assembler"

NAME z80-asm \- command-line Z80 CPU assember for Unix and DO$

SYNOPSIS z80-asm [-wlhcf XX] inputfile[.asm] [startaddress[[:length] :outputfile] ]

z80-asm [-wlhcf XX] inputfile startaddress[:length]:outputfile ...

DESCRIPTION z80-asm is a two pass compiler of the Z80 CPU assembly language. It's first argument is name of an input (source) file. If no sections follow no code is generated. In the case of exactly one section follows and the inputfile name ends with .asm the outputfile with its leading colon delimiter and the optional length may be omitted. Then the output is written to a file named inputfilename.z80.

Der Aufruf des Programms mit der Option -l (Listing) hat ja funktionert aber es wurde keine Datei hello1.z80 generiert.

ubuntu@ubuntu:/usr/local/bin$ z80-asm -l hello1.asm
0000 3e 01          1  ld A,1
0002 06 02          2  ld b,2
0004 0e 03          3  ld c, 3
0006                4 end
No code generated
ubuntu@ubuntu:/usr/local/bin$ z80-asm hello1.asm
No code generated

Ich habe dann anschließend in meinem home-Verzeichnis zwei Unterverzeichnisse bin und z80 angelegt. In das Verzeichnis /home/bin habe ich die Programme z80-asm, z80-mon und hello1.asm von /usr/local/bin rüberkopiert.

Leider führte das nicht zum Erfolg:

ubuntu@ubuntu:/bin$ cd $HOME/bin 
ubuntu@ubuntu:~/bin$ ls
hello1.asm  z80-asm  z80-mon
ubuntu@ubuntu:~/bin$ z80-asm hello1.asm
No code generated
ubuntu@ubuntu:~/bin$ z80-asm -l hello1.asm
0000 3e 01          1  ld A,1
0002 06 02          2  ld b,2
0004 0e 03          3  ld c, 3
0006                4 end
No code generated

Habe ich etwas falsch verstanden oder übersehen?

VG Helmi

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

Der Satz vor deiner Neonreklame lautet

If no sections follow no code is generated.

Passt exakt mit dem überein was bei dir passiert.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6234

Also was mit "sections" gemeint ist, ist mir jetzt auch nicht klar. So etwas ist mir erst ab Atari-ST und IBM-PC für "relativ ladbare" Dateien begegnet.

Vielleicht ist damit aber auch die Startadresse gemeint. Bei CP/M war die Startadresse immer 0x100 (außer bei Amstrad und ähnlichen Exoten). Aber im Embedded Bereich muss das "Betriebssystem" natürlich bei 0 starten (nach einem Reset).

Allerdings bin ich auch verwundert, das ein Assembler hier als Compiler bezeichnet wird. Ich hatte damals, bei meinen Z80 Spielereien, immer den Cromemco Assembler (one Pass) verwendet. Der musste allerdings von einem zusätzlichen Programm gestartet werden, welches vermutlich eine Schnittstellenanpassung vorgenommen hatte. Ein one-pass (was auch immer) erfordert vom Programmierknecht etwas mehr Disziplin.

@dirkolus Wenn man dabei auf Funktionen des Betriebssystems (CP/M) oder des BIOS zurückgreifen kann sollte das mit weniger als 64 Bytes machbar sein. Aber wenn es um einen nackten Arduino geht, stimme ich dir zu.

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

Dakuan schrieb:

Also was mit "sections" gemeint ist, ist mir jetzt auch nicht klar. So etwas ist mir erst ab Atari-ST und IBM-PC für "relativ ladbare" Dateien begegnet.

Bedeutet: Wenn hintendran nix mehr steht, dann wird auch nix gemacht.

Laut Online-Manpage https://linux.die.net/man/1/z80asm (-l = Write a list file. No filename or '-' means stderr.) musst du das wie oben bereits angedeutet so schreiben:

z80-asm -l -i hello1.asm -o /tmp/hallo

Ohne Ausgabedatei erwartet das laut dem gelb markierten („Wenn genau ein Abschnitt folgt und der Name der Eingabedatei mit .asm endet, kann die Ausgabedatei mit dem führenden Doppelpunkt als Trennzeichen und der optionalen Länge weggelassen werden.“) sowas wie

z80-asm -i hello.asm

Zumindest verstehe ich die Manpage so.

Hartmut2

Anmeldungsdatum:
11. Oktober 2018

Beiträge: 101

Wenn ich Deine Syntax richtig lese:

SYNOPSIS z80-asm [-wlhcf XX] inputfile[.asm] [startaddress[[:length] :outputfile] ]

fehlt bei Dir die 'startaddress'. Lt. Deinem angehängten PDF muß diese dezimal oder hexadezimal im Format 0x0000 bis 0xffff sein. Versuch also mal

z80-asm hello1.asm 0

Helmi

(Themenstarter)

Anmeldungsdatum:
12. Mai 2023

Beiträge: 4

Hallo ChickenLipsRfun2eat und alle anderen,

vielen Dank für Deinen Tipp! Jetzt habe ich es verstanden. Ich dachte vorher, dass alles was in der Synopsis in eckigen Klammern steht immer optional ist und weggelassen werden kann.

Nach Aufruf des Programmes mit

ubuntu@ubuntu:~/bin$ z80-asm test.asm test

wurde das z80-file erzeugt und der z80-Monitor hat es verarbeiten können.

Der Z80-Monitor wird so gestartet:

ubuntu@ubuntu:~/bin$ z80-mon test:0

Danke an alle für die schnelle Hilfe. Ich würde das Thema dann jetzt als erledigt kennzeichnen im Forum.

VG Helmi

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6234

Mich würde noch interessieren, ob du entsprechende Hardware hast oder einen Emulator verwendest.

Helmi

(Themenstarter)

Anmeldungsdatum:
12. Mai 2023

Beiträge: 4

Hallo Dakuan, ich habe den Microprofessor MPF 1 (Lerncomputer aus den 80er Jahren von Multitech). VG Helmi

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6234

Niedliches Teil. Ein Kollege von mir hatte mal so einen.

Antworten |