Die Suche ergab 131 Treffer

von Paul
07.04.2023, 09:52
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Ich möchte auch noch mal etwas genauer auf die Parameter von Parseline() eingehen.
Das mit line habe ich verstanden. Beim Aufruf mit parseLine(buf, &line); gebe ich die Adresse von Line weiter, also einen Pointer. Somit kann der Inhalt von line verändert werden, z.B. mit Initline
Was geschieht mit buf? Wird beim Aufruf der gesamte Buffer kopiert? Das wäre dann ja vergleichsweise langsam, erklärt aber warum der buf vom main nicht verändert werden kann.
Ist es dann sinnvoll die resultierende Variable mit dem gleichen Namen zu versehen? Intuitiv hätte ich lbuf verwendet was eine lokale Kopie von buf andeutet.

Bei Parsetoken wiederum übergibst du die lokale Kopie von buf und gibst ihr den Namen start, was ja wiederum eine lokale kopie von buf ist, genauso wie field und delimiter.
du veränderst start, was erstmal keine Auswirkung hat weil es ja eine lokale Kopie ist. Am ende erhöhst du noch start um eins und gibst es als rückgabewert zurück.
Spannender wird es mit field. Das veränderst du und gibst am ende noch das Stringende Zeichen hinzu. Aber ist es nicht genau wie start eine lokale Kopie?
Delimiter wird nicht verändert, also stellt sich auch keine Frage bezüglich der Auswirkung auf die aufrufende Parseline.
von Paul
07.04.2023, 09:43
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Hallo Bernd, ich habe ein paar Fragen zu den "magic numbers" die du in fileio.c verwendest.
Das liest sich immer einfach, aber woher bekomme ich sie?
- die Größe des Buffers. Du wählst 100, die längste Zeile ist 86. Man könnte auch 255 verwenden. Aber was ist mit Buffer von 20? Wie kann ich in Etappen einlesen wenn mein Puffer kleiner ist als eine ganze Zeile?
- Die Größe der t_line objekte. Für den Staat reservierst du 60, für die Stadt 50, sind zusammen 110, mehr als jede Zeile.
Das sind für die Programmierung wichtige Werte aber woher bekomme ich die?
von Paul
26.03.2023, 22:57
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

admin hat geschrieben: 26.03.2023, 20:34 Ich frage mich allerdings, wie du sie überhaupt kompilieren konntest: du hättest einen Compile-Fehler bekommen müssen...
ich habe ein S bei InitForms entfernt ;)
mit initforms(2,false); funktioniert aber deutlich besser ;)
von Paul
26.03.2023, 15:44
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Vielen Dank Bernd,
mein cLS() funktioniert jetzt.
Hast du eine Idee warum der Fehler nicht gemeldet wurde?
es wurde ja einfach nicht ausgeführt :?
und F3TEST konnte ich zwar mit deinem zcc Aufruf erzeugen und starten,
es zeigt auch einen Bildschirm an, nimmt aber keine Tasten an.
Soll das so sein?
Schönen Rest-Sonntag wünsche ich.
von Paul
25.03.2023, 12:17
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Das Manual habe ich nicht gefunden aber dies hier: https://en.wikipedia.org/wiki/Amstrad_C ... racter_set
von Paul
25.03.2023, 11:33
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Ein eigenes Projekt wäre übertrieben,
ich möchte einfach ein paar Sachen ausprobieren zum üben.
Bitte verrate noch wie ich die ganzen Form3 Sachen übersetzen kann.
zcc +cpm -subtype=pcw80 -lndos -create-app forms3tst.c -o forms3tst.com
hat nicht funktioniert
forms3tst.c:83:15: fatal error: Too few arguments to call to function 'initForms'
Compilation aborted

Davon abgesehen hatte ich das CLS schon versucht. Dazu fand ich ein funktionierendes Beispiel:

Code: Alles auswählen

/*
 *	Test the Native Console of the Amstrad PCW
 *
 *	23/3/2021 RobertK (based on ansivt52.c by Stefano)
 *
	Manual Index:
	https://www.manualslib.com/manual/1002846/Amstrad-Pcw8256.html?page=170#manual

	Character Set:
	https://www.manualslib.com/manual/1002846/Amstrad-Pcw8256.html?page=283#manual

	Terminal codes:
	https://www.manualslib.com/manual/1002846/Amstrad-Pcw8256.html?page=308#manual
 */

#include <stdio.h>

void main()
{
    int x;

    printf("Before CLS\n");
    printf("\x1b\x45");	 // ESC E -> Clear screen
    printf("\x1b\x48");  // ESC H -> Home
    printf("If this is the first thing you can read, CLS is OK.\n");

    /* Draw an X */
    for (x = 0; x < 11; x++) {
		// ESC Y r c -> gotoxy
		printf("\x1b\x59%c%c*",32 + 10 + x, 32 + 20 + x);
		printf("\x1b\x59%c%c*",32 + 20 - x, 32 + 20 + x);
    }
}
Übersetzt mit zcc +cpm -subtype=pcw80 -lndos -create-app screen.c -o screen.com

Ich habe dann versucht das selber umzusetzen:

Code: Alles auswählen

#include <stdio.h>

void gotoXY(unsigned int x, unsigned int y) {
    putchar(27);        // ESC
    putchar('Y');       // cursor to position
    putchar(y + 32);    // row + 32
    putchar(x + 32);    // column + 32
}
void cLS() {
    printf("Before CLS\n");
    printf("\x1b\x45");	 // ESC E -> Clear screen
    printf("\x1b\x48");  // ESC H -> Home
    printf("Test\n");
 /* putchar(27);       // ESC
    putchar(69);       // cls
    putchar(27);       // ESC
    putchar(72);       // home
*/
}

int main(void) {
	cLS;
    putchar('A'); // oder printf("%s", "O");
    gotoXY(1,1);
    putchar('B'); // oder printf("%s", "O");
    gotoXY(2, 2);
    putchar('C'); // oder printf("%s", "O");
    gotoXY(14, 14);
    putchar('O'); // oder printf("%s", "O");
    gotoXY(80, 26);
    putchar('Z'); // oder printf("%s", "O");
}
Übersetzt mit zcc +cpm -subtype=pcw80 -lndos -create-app PrintAT.c -o PrintAT.com

Das funktioniert nicht.
es macht zwar HOME, aber der Bildschirm ist nicht leer.
Ich habe dann versucht die Printf vorher und hinterher hinzuzufügen.
Die werden aber auch nicht ausgegeben :cry:
von Paul
25.03.2023, 08:45
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Danke noch für das gotoXY. 8-)
Auch das funktioniert erwartungsgemäß.
Jetzt werde ich gierig. Ein CLS wäre dabei noch sehr praktisch ;)
und die Zeichen um Rahmen zu malen :ugeek:
von Paul
25.03.2023, 08:43
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Das Erstellen der Datei mit den FILE Operatoren fopen/fclose hat bei mir funktioniert.
Wie immer hatte ich das auch nicht bezweifelt.
Da ich nicht weiß wie der Witz "kommt ein pferd in eine bar..." weitergeht habe ich stattdessen
"das grüne nach oben ..." geschrieben.
Leider gibt die Joyce kein ü aus.
Wie bekomme ich Umlaute und sz auf der Joyce ausgegeben?
Irgendwo hatte Bernd einen Trick verwendet der funktionierte. Ich habe ihn jetzt nicht wiedergefunden und damals nicht wirklich verstanden.
von Paul
19.03.2023, 12:11
Forum: Hardware
Thema: Wir bauen einen Retro-JOYCE
Antworten: 11
Zugriffe: 6088

Re: Wir bauen einen Retro-JOYCE

Benötigen wir DRAMs? Wären SRAMs nicht praktischer? Ohne Refresh und ohne CAS/RAS Erzeugung?
von Paul
19.03.2023, 08:43
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 36309

Re: Fragen und Antworten zum C-Kurs

Super, vielen Dank Bernd.
Das funktioniert jetzt natürlich.
Ich bin allerdings etwas verwirrt. Ich dachte wenn ich etwas "neues" hinzu nehmen möchte füge ich das mit einem include hinzu.
Auch das ich etwas vom linken explizit weglassen muss (Dateioperationen) verwirrt.
Vielleicht bin ich da etwas zu verwöhnt, ich kenne das eigentlich so das der Optimizer das selber erkennt.
zcc ist ja kein Uraltprogramm sondern eins das auf 64bit Windows läuft :geek:
Egal, ich bin wieder up to date ;)