Die Suche ergab 148 Treffer

von Paul
26.03.2023, 15:44
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 529396

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: 529396

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: 529396

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: 529396

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: 529396

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: 66233

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: 529396

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 ;)
von Paul
18.03.2023, 18:04
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 529396

Re: Fragen und Antworten zum C-Kurs

Es ist nicht so das ich gar nichts übersetzen kann.
Die vier Stringbeispiele habe ich übersetzt bekommen.
von Paul
18.03.2023, 18:00
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 529396

Re: Fragen und Antworten zum C-Kurs

enum.c mit den Planeten lässt sich auch nicht von mir übersetzen.
Das erzählt mir was von

Code: Alles auswählen

../_DEVELOPMENT/l/sccz80/9-common/f48/fa.asm:12: error: undefined symbol: init_floatpack
  ^---- init_floatpack
von Paul
18.03.2023, 17:41
Forum: Programmierung
Thema: Fragen und Antworten zum C-Kurs
Antworten: 108
Zugriffe: 529396

Re: Fragen und Antworten zum C-Kurs

Wie gesagt, ich bin dabei die Übungen nachzuholen.
Ich habe versucht den Taschenrechner aus den Stringfolgen zu übersetzen.
ohne Erfolg.

Code: Alles auswählen

#include <stdio.h>
#include <string.h>


/* Formats a float by cutting off the zeroes at the end.
   If there are only zeroes after the decimal point, then
   the decimal point is cut off, too.
   
   Parameters: f          the float value to format
               formatted  a character buffer to hold the float as string
*/
void formatNumber(float f, char *formatted) {
    char *s;
    
    sprintf(formatted, "%f", f);
    s = formatted + strlen(formatted);
    --s;
    
    while (s != formatted) {
        if (*s != '0') {
            if (*s != '.') {
                ++s;
            }
            *s = '\0';
            break;
        }
        --s;
    }
}

/* Main.

   Returns an error code (== 0: ok, != 0: error).
*/
int main(void)
{
    float fInput, fAkku;
    char op, currentOp;
    char continueLoop;
    char formatted[20];
    
    printf("Mini-Taschenrechner\n\n");
    op = '\0';
    fAkku = 0;
    continueLoop = 1;
    do {
        printf("Zahl     : ");
        scanf("%f", &fInput);
        
        printf("Operation: ");
        currentOp = getchar();
        currentOp = getchar();
        
        switch (op) {
            case '\0':
                fAkku = fInput;
                break;
            case '+':
                fAkku = fAkku + fInput;
                break;
            case '-':
                fAkku = fAkku - fInput;
                break;
            case '*':
                fAkku = fAkku * fInput;
                break;
            case '/':
                fAkku = fAkku / fInput;
                break;
            default:
                continueLoop = 0;
        }
        
        formatNumber(fAkku, formatted);
        printf("    %s\n", formatted);
        op = currentOp;
    } while (currentOp != '=' && continueLoop);
    
    return 0;
}

Code: Alles auswählen

zcc +cpm -subtype=pcw80  -create-app calc.c -o calc.com
calc.c::main::0::5:36: error: undefined symbol: dadd
  ^---- dadd
calc.c::main::0::5:36: error: undefined symbol: dsub
  ^---- dsub
calc.c::main::0::5:36: error: undefined symbol: dmul
  ^---- dmul
calc.c::main::0::5:36: error: undefined symbol: ddiv
  ^---- ddiv
und noch ganz viele Zeilen mehr.
Was mache ich falsch?