Die Suche ergab 233 Treffer

von bbock
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.
von bbock
15.02.2023, 15:49
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36137

Re: Fragen und Antworten zum C-Kurs

Paul hat geschrieben: 15.02.2023, 14:55 Mich hatte die Grafik jetzt nicht wirklich vom Hocker gerissen...
Also, wenn dich Grafik auf der Joyce nicht vom Hocker reißt, dann wird's wohl schwer werden dich zu beeindrucken... :)
von bbock
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

Code: Alles auswählen

zcc +cpm -subtype=pcw80 -create-app hellogfx.c -o hellogfx.com
Dann sollte es funktionieren. Das -create-app ist hier wohl nötig.
von bbock
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.
von bbock
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.

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;
}
In der Eingabeaufforderung wechseln wir in das Projektverzeichnis graphic_hello und erzeugen das ausführbare Programm mit der Befehlszeile

Code: Alles auswählen

zcc +cpm -subtype=pcw80 -create-app hellogfx.c -o hellogfx.com
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.

hellogfx.png
hellogfx.png (5.26 KiB) 4613 mal betrachtet

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.
von bbock
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

kurt hat geschrieben: 12.02.2023, 15:59 Das mit setkeys ist ein guter Hinweis, denn ich stelle gerade fest, das mir unter cpmbox die eckigen und geschweiften Klammern fehlen.
...
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.
von bbock
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

Paul hat geschrieben: 12.02.2023, 12:04 Meine bootdisk enthaelt setkeys und keys.wp.
Also mit "setkeys keys.wp"
bekomme ich viele Tasten wie ich es benoetige.
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.
von bbock
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.
von bbock
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):

Code: Alles auswählen

#include <stdio.h>

void main() {
    printf("Hallo, Welt!\n");
    return 0;
}
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:

Code: Alles auswählen

zcc +cpm -subtype=pcw80 hello.c -o hello.com
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!
von bbock
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: Das neueste z88dk-Paket ist der nightly build, also nehmen wir den Link hinter "Nightly": http://nightly.z88dk.org/ und dort die ZIP-Datei "z88dk-win32-latest.zip - Latest win32 build". Die ZIP-Datei entpacken wir nach C:\, dort erhalten wir ein Verzeichnis namens z88dk. Natürlich kann man die Datei auch an anderer Stelle entpacken - die folgenden, vom z88dk-Verzeichnis abhängigen Pfade müssen dann entsprechend angepasst werden. Der Einfachheit halber beziehe ich mich ab jetzt immer auf C:\z88dk.

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.