Du wolltest wahrscheinlich schreiben das der Stackpointer bei F3FF nicht bei FFF0?bbock hat geschrieben: ↑18.08.2023, 10:10Die pragma-define-Option stellt sicher, dass der Stackpointer bei FFF0 beginnt. Damit bleibt der Speicherbereich ab F400 sicher vor Überschreibung durch den Stack.Code: Alles auswählen
zcc +cpm -subtype=pcw80 -compiler=sccz80 -pragma-define:REGISTER_SP=0xF3FF -create-app testprg1.c -o testprg1.com
Die Suche ergab 130 Treffer
- 03.09.2023, 09:11
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 33968
Re: Fragen und Antworten zum C-Kurs
Kann es sei das du dich vertippt hast Bernd?
- 03.09.2023, 08:44
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 33968
Re: Fragen und Antworten zum C-Kurs
Meine Frage kommt sicher recht spät brennt mir trotzdem auf der "Seele".
Bei den absoluten Speicheradressen auf die man Variablen legen kann:
Gibt es eine Liste von sinnvollen Speicheradressen für die Joyce wie z.B. Systemvariablen aus denen man sinnvolles auslesen oder die man sinnvoll manipulieren kann so wie bei den ZX-Maschinen?
Bei den absoluten Speicheradressen auf die man Variablen legen kann:
Gibt es eine Liste von sinnvollen Speicheradressen für die Joyce wie z.B. Systemvariablen aus denen man sinnvolles auslesen oder die man sinnvoll manipulieren kann so wie bei den ZX-Maschinen?
- 30.06.2023, 20:10
- Forum: Programmierung
- Thema: Übungen zu "Programmieren in C mit dem z88dk"
- Antworten: 11
- Zugriffe: 5744
Re: Übungen zu "Programmieren in C mit dem z88dk"
Interessant wäre festzustellen um wie viele Jahre sich die Rechnung aufgrund der viel zu kleinen Mantisse verschiebt.
- 30.06.2023, 19:54
- Forum: Programmierung
- Thema: Übungen zu "Programmieren in C mit dem z88dk"
- Antworten: 11
- Zugriffe: 5744
Re: Übungen zu "Programmieren in C mit dem z88dk"
So überschlagen etwa 1085 Jahre.
Im Kopf geht das einfach, aber auf 8Bit?
Eigentlich benötigen wir gar kein float, nur große Ganzzahlen. Leider kenne ich keine int128 Implementierung für 8 Bitter
Im Kopf geht das einfach, aber auf 8Bit?
Eigentlich benötigen wir gar kein float, nur große Ganzzahlen. Leider kenne ich keine int128 Implementierung für 8 Bitter
- 25.06.2023, 13:20
- Forum: Programmierung
- Thema: Übungen zu "Programmieren in C mit dem z88dk"
- Antworten: 11
- Zugriffe: 5744
Re: Übungen zu "Programmieren in C mit dem z88dk"
Ich war zwischendurch zuhause, hatte das upload nur vergessen.
- 25.06.2023, 13:16
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 33968
Re: Fragen und Antworten zum C-Kurs
Ich möchte mich nochmal ganz herzlich bei Bernd bedanken.
Auch wenn der Kurs derzeit eingeschlafen ist.
Ich versuche grade einen ZX81 Emulator auf dem PICO RP2040 zu erweitern.
Der Kurs war dafür nicht nur lehrreich, ich konnte auch auf der Joyce einfach das Stringhandling ausprobieren.
So konnte ich vorab austesten wie ich aus dem Dateinamen die Startdaresse und die Länge extrahieren kann.
Beispiel: LOAD "DELPHI.BIN;8192:512" (die Länge ist nur ein Test, es kann weggelassen werden und die Dateilaenge verwendet werden. Sie wird aber verwendet für den Fall das man nicht die ganze Datei einlesen möchte)
Notwendig wird die Länge dann wenn ich abspeichere.
Ohne den Kurs hätte ich das nicht hinbekommen.
Auch wenn der Kurs derzeit eingeschlafen ist.
Ich versuche grade einen ZX81 Emulator auf dem PICO RP2040 zu erweitern.
Der Kurs war dafür nicht nur lehrreich, ich konnte auch auf der Joyce einfach das Stringhandling ausprobieren.
So konnte ich vorab austesten wie ich aus dem Dateinamen die Startdaresse und die Länge extrahieren kann.
Beispiel: LOAD "DELPHI.BIN;8192:512" (die Länge ist nur ein Test, es kann weggelassen werden und die Dateilaenge verwendet werden. Sie wird aber verwendet für den Fall das man nicht die ganze Datei einlesen möchte)
Notwendig wird die Länge dann wenn ich abspeichere.
Ohne den Kurs hätte ich das nicht hinbekommen.
- 27.05.2023, 21:03
- Forum: Programmierung
- Thema: Übungen zu "Programmieren in C mit dem z88dk"
- Antworten: 11
- Zugriffe: 5744
Re: Übungen zu "Programmieren in C mit dem z88dk"
Ich habe Form3 verwendet.
Wenn ich zurück bin poste ich meine Lösung mal. Bin momentan in Franken
Wenn ich zurück bin poste ich meine Lösung mal. Bin momentan in Franken
- 21.05.2023, 12:15
- Forum: Programmierung
- Thema: Übungen zu "Programmieren in C mit dem z88dk"
- Antworten: 11
- Zugriffe: 5744
Re: Übungen zu "Programmieren in C mit dem z88dk"
Wie kann ich auf der Joyce und der CP/M Box das @ eingeben?
- 26.04.2023, 07:11
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 33968
Re: Fragen und Antworten zum C-Kurs
Hallo Bernd, gibst du uns bitte noch ein paar Aufgaben zum üben?
Ich habe mir inzwischen zu jeder Aufgabe eine Datei mit der Endung .BAT gemacht in dem der Befehl zum übersetzen steht damit ich nicht immer wieder experimentieren muss. Aktuell eine makeFile3.bat.
Haben wir schon Übergabeparameter benutzt? Das wäre doch recht praktisch zu wissen wie das geht.
Ich habe mir inzwischen zu jeder Aufgabe eine Datei mit der Endung .BAT gemacht in dem der Befehl zum übersetzen steht damit ich nicht immer wieder experimentieren muss. Aktuell eine makeFile3.bat.
Haben wir schon Übergabeparameter benutzt? Das wäre doch recht praktisch zu wissen wie das geht.
- 07.04.2023, 09:52
- Forum: Programmierung
- Thema: Fragen und Antworten zum C-Kurs
- Antworten: 108
- Zugriffe: 33968
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.
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.