Die Suche ergab 233 Treffer
- 15.02.2023, 15:50
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 36137
Re: Fragen und Antworten zum C-Kurs
Was ist eigentlich mit Werner? Haben wir den unterwegs verloren? Ich dachte, er wollte auch hier mitmachen.
- 15.02.2023, 15:49
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 36137
- 15.02.2023, 15:48
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 36137
Re: Fragen und Antworten zum C-Kurs
Nach einem erneuten Test konnte ich das Problem nachvollziehen. Kompiliert mal mit
Dann sollte es funktionieren. Das -create-app ist hier wohl nötig.
Code: Alles auswählen
zcc +cpm -subtype=pcw80 -create-app hellogfx.c -o hellogfx.com
- 12.02.2023, 17:47
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 36137
Re: Fragen und Antworten zum C-Kurs
Nein, und wenn doch, dann kannst du ja wieder die deutsche Tastatur-Datei verwenden.
- 12.02.2023, 17:16
- Forum: Programmierung
- Thema: Programmieren in C mit dem z88dk
- Antworten: 20
- Zugriffe: 10127
4. Unser erstes Grafik-Programm
Um den Appetit auf C und das z88dk noch etwas anzuregen, erstellen wir ein erstes kleines Grafik-Programm, bevor wir uns dem Aufbau von C-Programmen widmen.
In unserem Verzeichnis C:\dev erstellen wir ein neues Projektverzeichnis namens graphic_hello. Die Länge des Verzeichnisnamens ist kein Problem; insbesondere bei der ausführbaren COM-Datei sollten wir uns aber an das 8.3-Schema halten, also max. 8 Zeichen für den Dateinamen und max. 3 Zeichen für die Extension.
Im Editor schreiben wir den Quellcode unseres Programms (s.u.) und speichern ihn unter dem Namen hellogfx.c im Verzeichnis graphic_hello.
In der Eingabeaufforderung wechseln wir in das Projektverzeichnis graphic_hello und erzeugen das ausführbare Programm mit der Befehlszeile
Das erzeugte ausführbare Programm hat den Dateinamen HELLOGFX.COM. Wir kopieren die Datei in das ramdisk-Verzeichnis, wechseln zur CP/M Box und starten das Programm durch Eingabe von hellogfx.
Was passiert in diesem Programm?
In unserem Verzeichnis C:\dev erstellen wir ein neues Projektverzeichnis namens graphic_hello. Die Länge des Verzeichnisnamens ist kein Problem; insbesondere bei der ausführbaren COM-Datei sollten wir uns aber an das 8.3-Schema halten, also max. 8 Zeichen für den Dateinamen und max. 3 Zeichen für die Extension.
Im Editor schreiben wir den Quellcode unseres Programms (s.u.) und speichern ihn unter dem Namen hellogfx.c im Verzeichnis graphic_hello.
Code: Alles auswählen
#include <stdio.h>
#include <graphics.h>
int main(void)
{
clg();
printf("%cH", 27); // ESC H = VT100 cursor home
printf("\n\n graphics demo");
plot(360, 128);
draw(10, 10, 710, 10);
drawto(710, 250);
drawto(10, 250);
drawto(10, 10);
circle(360, 128, 80, 10);
getchar();
clg();
printf("%c1", 27); // ESC 1 = switch on status bar
printf("%ce", 27); // ESC e = show cursor
return 0;
}
Code: Alles auswählen
zcc +cpm -subtype=pcw80 -create-app hellogfx.c -o hellogfx.com
Was passiert in diesem Programm?
- Zuerst wird der Grafik-Bildschirm mit clg() gelöscht.
- Der Cursor wird in die linke obere Ecke gesetzt und es wird eine Überschrift ausgegeben (graphics demo).
- Es wird ein Punkt in der Mitte des Bildschirms gezeichnet (plot).
- Ein Rahmen wird mit vier Linien gezeichnet (draw, drawto).
- Ein Kreis wird in die Mitte gezeichnet.
- Das Programm wartet auf einen Tastendruck (getch).
- Die Statuszeile, also die unterste Zeile, wird eingeschaltet (falls sie ausgeschaltet war).
- Der Cursor wir angezeigt (falls er ausgeschaltet war).
- Der Return Code 0 wird an das Betriebssystem zurückgegeben um zu signalisieren, dass kein Fehler aufgetreten ist.
- 12.02.2023, 16:35
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 36137
Re: Fragen und Antworten zum C-Kurs
Und wenn du die eckigen und geschweiften Klammern hast, dann fehlen dir die deutschen Umlaute... Das ist der Grund, warum ich in TurboPascal-Code die alternative Schreibweise verwende, also z.B. a(.idx.) statt a[idx] und (* Kommentar *) statt { Kommentar }.
Was deine Linux-Ambitionen betrifft: die fertigen Builds gibt's immer für Windows und OS X; für alle anderen Betriebssysteme muss man die Sourcen selbst kompilieren. Die Arbeit kann ich dir leider nicht abnehmen; ich habe aktuell auch zu wenig Zeit mich darum zu kümmern. Der C-Kurs setzt Windows voraus, wo besonders Installation und Konfiguration deutlich von Linux abweichen. Die Pfade anzupassen ist wohl das kleinste Problem. Wenn du es am einmal am Laufen hast, dann werden die Unterschiede im weiteren Verlauf des Kurses deutlich geringer ausfallen.
- 12.02.2023, 16:21
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 36137
Re: Fragen und Antworten zum C-Kurs
Das ist die Anpassung der Tastatur in CP/M, wie sie auch auf der originalen Hardware funktioniert. Man kann die Tastatureinstellungen auch im Emulator CP/M Box einstellen, siehe Options > Emulation > Keyboard.
- 10.02.2023, 22:42
- Forum: Programmierung
- Thema: Programmierkurs?
- Antworten: 9
- Zugriffe: 5178
Re: Programmierkurs?
Die Resonanz ist noch etwas bescheiden, aber das macht nichts. Den Programmierkurs, bzw. dessen erste Schritte, findet ihr hier.
- 10.02.2023, 22:40
- Forum: Programmierung
- Thema: Programmieren in C mit dem z88dk
- Antworten: 20
- Zugriffe: 10127
3. Unser erstes Programm
Wir brauchen ein Verzeichnis, in dem wir die Dateien unseres ersten Projekts unterbringen wollen. Wie wäre es mit C:\dev\hello? Wir legen das Verzeichnis an, starten unseren Texteditor und schreiben folgenden Code (Copy-Paste geht natürlich auch):
Das speichern wir dann als "hello.c" im Verzeichnis hello ab - die erste Datei in unserem neuen Projektverzeichnis. Nun müssen wir noch kompilieren und binden (neudeutsch: linken); beides erledigt das Kommando zcc. Wir starten die Eingabeaufforderung (cmd), falls sie nicht schon offen ist, und tippen folgenden Befehl, gefolgt von RETURN, ein:
Wenn ihr jetzt im Projektverzeichnis hello nachseht, z.B. per dir-Kommando, dann werdet ihr eine neue Datei namens hello.com vorfinden. Das ist die ausführbare COM-Datei, die wir im Emulator testen können - oder auf der Joyce selbst.
Wir starten die CP/M Box. Unter Options > Hardware stellen wir im Register PCW die 8512 als "Quick model" ein. Dann brauchen wir noch ein Verzeichnis, das die RAM-Disk simuliert: Wir erstellen zunächst ein Verzeichnis, z.B. C:\dev\ramdisk. Dann in der CP/M Box: Options > Emulation > Register Mapping (ganz rechts). Dort aktivieren wir "Enabled", stellen das eben erstellte ramdisk-Verzeichnis unter "Directory" ein und belassen das "Filler byte" auf 0x001A. Dann klicken wir auf "Accept".
Jetzt müssen wir noch eine Boot-Diskette in Laufwerk A: einlegen. Das geht mit File > Drive A > Insert oder mit der Taste F4. Die Boot-Diskette mit CP/M braucht ihr natürlich, und zwar als DSK-Datei. Die wählt ihr aus und das System sollte starten. Wenn nicht, dann schaut mal, ob die Emulation pausiert ist. Ihr müsst dann nur auf die "Play"-Schaltfläche unter dem File-Menü klicken.
Um das Programm zu starten, kopieren wir die COM-Datei in die simulierte RAM-Disk, also ins Verzeichnis C:\dev\ramdisk. In der CP/M Box wechseln wir zum Laufwerk M: (die RAM-Disk), eben indem wir M: eingeben. Dann starten wir die COM-Datei durch Eingabe von hello, gefolgt von RETURN. Der Text Hallo, Welt! erscheint - wir haben soeben einen Schritt in eine größere Welt getan!
Code: Alles auswählen
#include <stdio.h>
void main() {
printf("Hallo, Welt!\n");
return 0;
}
Code: Alles auswählen
zcc +cpm -subtype=pcw80 hello.c -o hello.com
Wir starten die CP/M Box. Unter Options > Hardware stellen wir im Register PCW die 8512 als "Quick model" ein. Dann brauchen wir noch ein Verzeichnis, das die RAM-Disk simuliert: Wir erstellen zunächst ein Verzeichnis, z.B. C:\dev\ramdisk. Dann in der CP/M Box: Options > Emulation > Register Mapping (ganz rechts). Dort aktivieren wir "Enabled", stellen das eben erstellte ramdisk-Verzeichnis unter "Directory" ein und belassen das "Filler byte" auf 0x001A. Dann klicken wir auf "Accept".
Jetzt müssen wir noch eine Boot-Diskette in Laufwerk A: einlegen. Das geht mit File > Drive A > Insert oder mit der Taste F4. Die Boot-Diskette mit CP/M braucht ihr natürlich, und zwar als DSK-Datei. Die wählt ihr aus und das System sollte starten. Wenn nicht, dann schaut mal, ob die Emulation pausiert ist. Ihr müsst dann nur auf die "Play"-Schaltfläche unter dem File-Menü klicken.
Um das Programm zu starten, kopieren wir die COM-Datei in die simulierte RAM-Disk, also ins Verzeichnis C:\dev\ramdisk. In der CP/M Box wechseln wir zum Laufwerk M: (die RAM-Disk), eben indem wir M: eingeben. Dann starten wir die COM-Datei durch Eingabe von hello, gefolgt von RETURN. Der Text Hallo, Welt! erscheint - wir haben soeben einen Schritt in eine größere Welt getan!
- 10.02.2023, 22:39
- Forum: Programmierung
- Thema: Programmieren in C mit dem z88dk
- Antworten: 20
- Zugriffe: 10127
Programmieren in C mit dem z88dk
1. Vorwort
Das z88dk, also das Z88 development kit, ist ein Entwicklungspaket für C und Assembler, mit dem man Programme für über 100 Z80-Systeme erstellen kann. Es ist also schon lange nicht mehr nur für die ursprüngliche Zielplattform Cambridge Z88, sondern u.a. auch für die Amstrad PCW-Computer verwendbar. Da die Programme auf einem PC entwickelt werden und nicht direkt auf dem Zielsystem, spricht man von einem cross compiler.
2. Setup
Als Standardausrüstung nehmen wir einen Windows-PC. Auch ältere Systeme sollten vollauf genügen. Um mit dem z88dk in C für die Joyce programmieren zu können, brauchen wir noch drei Dinge:
Jetzt müssen wir nur noch eine Umgebungsvariable setzen und eine weitere anpassen. Dazu rufen wir die Systemeigenschaften auf. Das geht so:
Startmenü > Einstellungen > Suchfeld: Umgebungsvariablen > Systemumgebungsvariablen bearbeiten.
Oder so:
Windows 10: Startmenü > Einstellungen > Info > Erweiterte Systemeinstellungen
Windows 11: Startmenü > Einstellungen > System > Info > Erweiterte Systemeinstellungen
Oder so:
Windows-Taste + R > sysdm.cpl > Registerkarte "Erweitert"
In allen drei Fällen erscheint der Dialog "Systemeigenschaften". Im Register "Erweitert" gibt es unten die Schaltfläche "Umgebungsvariablen". Ein Klick darauf führt zu einem zweigeteilten Fenster: oben sind die Benutzervariablen, unten die Systemvariablen.
Wir fügen eine neue Benutzervariable durch Klick auf die obere "Neu..."-Schaltfläche hinzu. Bei "Name der Variablen" tragen wir ZCCCFG ein, bei "Wert der Variablen" den Pfad C:\z88dk\lib\config (oder <mein z88dk-Verzeichnis>\lib\config, falls ihr das z88dk woanders entpackt habt).
"Path" findet man bei den Benutzervariablen und bei den Systemvariablen. Wir ändern die Benutzervariable per Doppelklick. Über die Schaltfläche "Neu" fügen wir einen Eintrag mit dem Pfad zum bin-Verzeichnis des z88dk hinzu, also C:\z88dk\bin.
So, das war's auch schon mit der z88dk-Installation. Entpacken, zwei Umgebungsvariablen und fertig. Wir testen mal, ob's auch funktioniert: Dazu geben wir im Suchfeld neben dem Startmenü cmd gefolgt von der Return-Taste ein; das startet die gute alte Windows-Eingabeaufforderung. Wenn man jetzt zcc eintippt (und wieder Return), dann sollte eine längere Liste von Compiler-Optionen ausgegeben werden.
Den Editor und den Emulator muss man nur herunterladen und wie jedes gewöhnliche Windows-Programm installieren. Das bekommt ihr hin, denke ich. Falls nicht: einfach fragen.
Das z88dk, also das Z88 development kit, ist ein Entwicklungspaket für C und Assembler, mit dem man Programme für über 100 Z80-Systeme erstellen kann. Es ist also schon lange nicht mehr nur für die ursprüngliche Zielplattform Cambridge Z88, sondern u.a. auch für die Amstrad PCW-Computer verwendbar. Da die Programme auf einem PC entwickelt werden und nicht direkt auf dem Zielsystem, spricht man von einem cross compiler.
2. Setup
Als Standardausrüstung nehmen wir einen Windows-PC. Auch ältere Systeme sollten vollauf genügen. Um mit dem z88dk in C für die Joyce programmieren zu können, brauchen wir noch drei Dinge:
- Das z88dk-Paket: https://z88dk.org/site/download
- Einen Editor, z.B. Notepad++: https://notepad-plus-plus.org/downloads/
- Einen Emulator für's Testen, vorzugsweise CP/M Box: https://www.habisoft.com/pcw/en.htm
Jetzt müssen wir nur noch eine Umgebungsvariable setzen und eine weitere anpassen. Dazu rufen wir die Systemeigenschaften auf. Das geht so:
Startmenü > Einstellungen > Suchfeld: Umgebungsvariablen > Systemumgebungsvariablen bearbeiten.
Oder so:
Windows 10: Startmenü > Einstellungen > Info > Erweiterte Systemeinstellungen
Windows 11: Startmenü > Einstellungen > System > Info > Erweiterte Systemeinstellungen
Oder so:
Windows-Taste + R > sysdm.cpl > Registerkarte "Erweitert"
In allen drei Fällen erscheint der Dialog "Systemeigenschaften". Im Register "Erweitert" gibt es unten die Schaltfläche "Umgebungsvariablen". Ein Klick darauf führt zu einem zweigeteilten Fenster: oben sind die Benutzervariablen, unten die Systemvariablen.
Wir fügen eine neue Benutzervariable durch Klick auf die obere "Neu..."-Schaltfläche hinzu. Bei "Name der Variablen" tragen wir ZCCCFG ein, bei "Wert der Variablen" den Pfad C:\z88dk\lib\config (oder <mein z88dk-Verzeichnis>\lib\config, falls ihr das z88dk woanders entpackt habt).
"Path" findet man bei den Benutzervariablen und bei den Systemvariablen. Wir ändern die Benutzervariable per Doppelklick. Über die Schaltfläche "Neu" fügen wir einen Eintrag mit dem Pfad zum bin-Verzeichnis des z88dk hinzu, also C:\z88dk\bin.
So, das war's auch schon mit der z88dk-Installation. Entpacken, zwei Umgebungsvariablen und fertig. Wir testen mal, ob's auch funktioniert: Dazu geben wir im Suchfeld neben dem Startmenü cmd gefolgt von der Return-Taste ein; das startet die gute alte Windows-Eingabeaufforderung. Wenn man jetzt zcc eintippt (und wieder Return), dann sollte eine längere Liste von Compiler-Optionen ausgegeben werden.
Den Editor und den Emulator muss man nur herunterladen und wie jedes gewöhnliche Windows-Programm installieren. Das bekommt ihr hin, denke ich. Falls nicht: einfach fragen.