Diskussion:Zeichen

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Diverses[Bearbeiten]

sollte man den Artikel nicht umbenennen in Zeichensatz ? (oder aufteilen in Grundlagen und Programierung eigener Zeichensätze...)

sind die "Tabellen-" Screenshots "handgemalt" oder ist das ein Programm ? BTW: in diesen Fall wär's wohl besser den Rand bei den Screenshots abzuschneiden...

generell müssen die Artikel besser untereinander verlinkt werden (aber das ist ja kein Problem *g*) --FXXS 15:05, 14. Aug 2006 (CEST)

Könnte man diskutieren. Allerdings viel kann über ein Zeichen nicht geschrieben werden. Deswegen habe ich das so gehandhabt wie bei Tastatur oder Joystick. Erst die Grundlagen und dann die Programmierung, so hat man alles zusammen.
Natürlich sind die Screenshoots per Programm unter WinVice entstanden, sonst wäre es zu mühsam bzw. nicht alle Zeichenn darstellbar und ich habe sie schon grosszügig beschnitten. --Jodigi 16:16, 14. Aug 2006 (CEST)
Mit "Rand abschneiden" meinte ich den allgemeinen Bildschirmrahmen... und das Programm würd mich interessieren, ist es einfach nur ne For-Next schleife die 5 Zeichen pro durchlauf ausgibt oder noch was anderes ? (So ähnlich hab ich's grad getestet, aber sowas wie <CLR/HOME> bringt einiges durcheinander *g*.... PRGs /D64s hochladen wär schon praktisch... naja, alles nicht so wichtig *g*) --FXXS 17:46, 14. Aug 2006 (CEST)
Nachtrag ich seh's jetzt erst, du hast nicht CHR$ zeichen dargestellt sondern gepoked... somit war meine anmerkung bzgl. <CLR/HOME> wohl Käse *g* --FXXS 18:00, 14. Aug 2006 (CEST)
Wäre auch dafür, dass die registrierten User zumindestens D64-Imagedateien hochladen kann. Das habe ich schon mal in einer anderen Diskussion erwähnt. --Jodigi 18:23, 14. Aug 2006 (CEST)
Für das entsprechende D64-Programm bitte ich dann mal um eine Rückantwort per Email. --Jodigi 18:41, 14. Aug 2006 (CEST)
hast Post... --FXXS 19:08, 14. Aug 2006 (CEST)
Ist schon beantwortet --Jodigi 19:57, 14. Aug 2006 (CEST)
Klaus muss die D64/T64-Dateien freischalten. Einfach auf die Tech Todo-Liste setzen. Standartmässig sind nur .png, gif, jpg und jpeg an Erweiterungen erlaubt. Ein Umbenennen der Datei hat auch keinen Wert, da der Header überprüft wird. --Joystick 11:44, 27. Aug 2006 (CEST)

Zeichensatz[Bearbeiten]

Da der Begriff häufig vorkommt und dieser Artikel ihn erklärt: Wie wäre es, wenn einer das Lemma "Zeichensatz" anlegt und weiterleitet auf "Zeichen"? --GoDot 18:01, 2. Jan. 2009 (CET)

Ja können wir so machen, habe mal kurze Sätze in der Einleitug in Bezug zum Zeichensatz ergänzt. --Jodigi 23:31, 2. Jan. 2009 (CET)
Ich werd dann mal die iLinks, die ich selber "verantworte" (Simons' Basic, TSB: in vielen Befehlen) anpassen... --GoDot 00:41, 3. Jan. 2009 (CET)

Beispiel[Bearbeiten]

Zu dem Beispielprogramm ganz unten: In Zeile 10 ein FOR I aber NEXT X und mit dem + hinter der Speicherstelle gibt's ein Syntax Error. In Zeile 30 fehlt eine Klammer bzw. es ist eine zu viel da, die letzte schließende Klammer kann man doch auch weglassen, oder? Zeile 61 gibt es viermal! Wollte erstmal hier nachfragen, ob das alles wirklich Fehler sind, bevor ich sie berichtige. Kann es sein, dass die Zeilen 11 bis 14 disassembliert folgendes ergeben?:

LDA #$00
LDY #$D0
STA $5F
STY $60
LDA #$00
LDY #$E0
STA $5A
STY $5B
LDA #$00
LDY #$40
STA $58
STY $59
JSR $A3BF
RTS

Was gibt's denn bei $A3BF? -Pohli 22:43, 22. Feb. 2009 (CET)

Habe das Programm korrigiert. $A3BF ist eine Kopier-Routine im Basic-ROM. siehe $B628. --Werner 23:59, 22. Feb. 2009 (CET)
Korrekturen sind ok--Jodigi 02:09, 23. Feb. 2009 (CET)
Super, jetzt funktioniert's! :-) Wie benutzt man denn die Kopierroutine? Alles bis einschließlich zum letzten STY dient doch nur dazu, der Routine die Adressen vorzulegen, die sie zum Kopieren braucht, oder? Also in $5F und $60 stehen Low- und HighByte der Anfangsadresse der Quelle, in $5A und $5B stehen Low- und HighByte der Endadresse der Quelle (jene wird nicht mitkopiert?) und in $58 und $59 stehen Low- und HighByte der Endadresse des Ziels? Holt sich die Routine die Werte immer automatisch aus diesen Adressen ($58 bis $60)? Ich hab hier Data Becker's Großes C64 Buch und das Neue C64 Intern. Dort sind die Routinen schön aufgelistet, mal nach Startadresse, mal nach Alphabet sotiert; und der Quelltext der Routinen steht dort auch. Aber wie man nun diese Routinen benutzt, hab ich nicht gefunden. Also welche Werte muss man den Routinen wie übergeben und welche Werte geben sie wie zurück. Oder soll man sich das jedes Mal selbst mit Hilfe des Quelltextes erarbeiten? --Pohli 14:46, 23. Feb. 2009 (CET)
Die Kopierroutine funktioniert genauso wie das alternative FOR-POKE X,PEEK Y-NEXT in BASIC nur ist deutlich schneller.--Jodigi 16:57, 23. Feb. 2009 (CET)
Ja hab ich gemerkt, hatte vorher die BASIC-Variante aus Data Becker's Die besten Tips & Tricks ausprobiert: Gähhn! Stimmen denn meine Annahmen von oben? --Pohli 18:59, 23. Feb. 2009 (CET)

Systemroutinen[Bearbeiten]

Es gibt noch eine weitere verwertbare Systemkopierroutine, allerdings nur für 255 Bytes auf einmal (maximal): $b688. Du setzt $35/$36 mit dem Ziel (lo/hi), lädst x (lo) und y (hi) mit der Quelle und den Akku mit der Anzahl Bytes, dann SYS 46728 (oder JSR $b688). Danach steht die Ziel-Endadresse in $35/$36. Hab ich mal mit einer ganzen Serie Demo-Progrämmchen als Trick des Monats in der 64'er gehabt. Nett. smile --GoDot 18:16, 23. Feb. 2009 (CET)
Interessant. Wäre das nicht ein weiteres Wiki-Projekt? Systemroutinen sammeln und beschreiben? :-) --Pohli 18:59, 23. Feb. 2009 (CET)
pro Gute Idee! --GoDot 22:23, 23. Feb. 2009 (CET)
pro Finde ich auch! Meine Vorstellungen dazu: eine Serie von Artikeln (Form: "Adresse 12345") für Zeropage und ROM-Routinen, die vom Speicherbelegungsplan aus verlinkt sind. Kategorie: Speicheradresse. Material dazu gibt es z.B. im 64'er-Kurs "Memory Map mit Wandervorschlägen" und im Buch PEEK + POKE. --Petrus 00:08, 24. Feb. 2009 (CET)
pro Das mit den Speicheradressen ist gut und wäre eine Vertiefung des Speicherbelegungsplans (der ja auch noch fertig gestellt werden müsste... ). Ich hoffe, es findet sich wer, der alle Speicheradressen nach und nach bearbeitet... Wenn schon, dann bitte sollten wir es dem C64-Wiki.com recht machen. Dort ist schonmal ein User angefangen mit Speicheradressen (siehe z.B. [[1]]), allerdings wird direkt die dezimale Speicheradresse als Name genommen. Zusätzlich könnte eine Hexadezimale Weiterleitung eingerichtet werden (für Assembler-Profis). Diese Idee ist recht gut, denn wer gibt den zunächst "Adresse XXXXX" ein. Ein visierter User wird eigentlich direkt die Speicheradresse eingeben wollen.--Jodigi 07:36, 24. Feb. 2009 (CET)
Zahlen als Lemmata? Nee, da bin ich aber gegen... Was ist denn mit den von Commodore vergebenen Library-Labels für das Betriebssystem (z.B. BASIN ($ffcf), SETNAM ($ffbd) usw.)? Bei Routinen, die da nicht vorgesehen waren, kann man ja eine Unterabteilung (Menüpunkt) aufmachen. So hätte man nach und nach das ganze ROM hier beschrieben. Oder ist das schon wieder ein neues Projekt? --GoDot 15:53, 24. Feb. 2009 (CET)
Mir ist jetzt nicht klar, wie das dann aussehen soll. Kannst du's mal an einem Beispiel (wie der obigen Routine $A3BF) verdeutlichen?
Zum Vergleich: nach meinen Vorstellungen würde der Artikel "Adresse 41919" oder "SYS 41919" heißen und etwa so aussehen:
SYS 41919
Speicherbereich nach oben verschieben
Hexadezimal: $A3BF
Beschreibung: ...
Beispiel: ...
--Petrus 23:16, 24. Feb. 2009 (CET)
Ich sehe gerade, dass die Library-Labels im Stichwort "KERNAL" schon behandelt werden. Ich meinte nun, dass man die jeweils zu einem eigenen Lemma macht, ähnlich wie bei den BASIC-Befehlswörtern. --GoDot 23:47, 25. Feb. 2009 (CET)
Klar, das macht Sinn. Wie gehen wir aber bei den zahlreichen anderen Routinen vor, die keinen Namen haben? --Petrus 23:55, 25. Feb. 2009 (CET)
Die Hinweise zu den Speicheradressen, die direkt mit einzelne BASIC-Befehle im Zusammenhang stehen, könnten sowieso als Unterpunkt bei den einzelnen Befehlen hingewiesen werden. Oder wir benutzen so eine schicke Box wie bei Simons BASIC und packen dort als Ergänzung die Speicheradressen hinzu. --Jodigi 04:20, 26. Feb. 2009 (CET)
Oh, danke! smile Die Box musste ich machen, weil davor nichts Vergleichbares da war. Zu den Routinen: Ich stelle mir vor, dass da (bei den kürzeren) wie in einem ROM-Listing der Quellcode abgedruckt wird, mit ausführlichem Kommentar. Bei den langen ($ffd2 z.B.) weiß ich auch nicht... --GoDot 13:32, 26. Feb. 2009 (CET)
Mein Wunsch dabei ist, dass nicht nur ROM-Routinen, sondern auch Zeropage-Adressen behandelt werden. Den Inhalt wünsche ich mir zweigleisig: einmal die Benutzung für Assembler-Programmierer, aber auch die für BASIC-Programmierer (SYS, PEEK, POKE).--Petrus 13:53, 26. Feb. 2009 (CET)
Noch unbeantwortet ist die Frage, welche Form das jeweilige Lemma eines Artikels über eine Speicheradresse haben soll. Imho sollte es zwei Kriterien erfüllen: 1) keine Mehrdeutigkeit zulassen 2) sofort als Speicheradresse erkennbar sein. Die numerische Form, wie sie im C64-Wiki.com benutzt wird, erfüllt beide nicht und wurde auch bereits von GoDot abgelehnt. Ein alternativer Vorschlag für Adressen, die noch keinen Namen haben: die hexadezimal Form, also z.B. "$0A" (Zeropage) oder "$A3BF"(Basic-Rom).--Petrus 13:53, 26. Feb. 2009 (CET)
Wenn die Hexidezimale Form, dann würde ich Sie immer 4stellig sehen, also z.B. $0800. Wobei ich mich immer Frage warum müssen wir doppelgleisig fahren? Einerseits haben wir in der C64-Wiki.de angefangen, alle Sachen beim Namen zu nennen wie Hintergrundfarbe (in der englischen Wiki ist es 53281). Andererseits zersplitten wir den netten Artikel Speicherbelegungsplan, weil es unpraktisch ist ihn so im Detail auf über 100KByte aufzulisten in die einzelnen Artikel wie VIC, SID, CIA, usw.
Vielleicht sollten wir die Routinen unter der Überschrift "Erweitertes Wissen" in bestehende Artikel einbauen, falls möglich. Und nur Routinen die sich nicht zuordnen lassen als einzelne Artikel laufen lassen.--Jodigi 18:07, 26. Feb. 2009 (CET)
Adressen als Artikelnamen, egal in welcher Form, fände ich auch SEHR seltsam, zumal das zu einem Riesenhaufen winzigst-Artikel führen würde. Dann doch lieber KERNAL#SETNAM_(FFBD) oder sowas (also den Funktionsnamen als Zwischenüberschrift). An vielen Stellen ist übrigens von "Speicheradresse" die Rede, obwohl es eigentlich um ein Register geht. $D012 ist eben Register Nummer 12 des VIC, der zufälligerweise ab $D000 eingeblendet wird. Von sowas wie "Raster_(D012)" oder gar Artikel "53266" zu reden wäre also schon deswegen wenig elegant. Was BASIC-Beispiele angeht, würde ich die aus den Artikeln zum KERNAL und den einzelnen Chips rauslassen und irgendwo anders sammeln bzw. verlinken, weil man doch ansonsten an jedem zweiten Register ranschreiben muss "geht aber von BASIC aus nicht oder nur mit folgenden Einschränkungen...". -- 1570 21:17, 26. Feb. 2009 (CET)
Gleich noch was, kann man auf c64-wiki.de eigentlich Navboxen oder ähnliches machen? Also sowas wie http://en.wikipedia.org/wiki/Template:The_Chronicles_of_Riddick , siehe auch http://en.wikipedia.org/wiki/Template:Navbox ? Sowas wäre für den Speicherplan und generell den Aufbau des C64 schon eine große Navigationshilfe. -- 1570 21:24, 26. Feb. 2009 (CET)
Klar kann man, das haben wir doch als Beispiel im Artikel Schnittstelle doch auch schon als Template Vorlage:Schnittstellen --Jodigi 23:00, 26. Feb. 2009 (CET)


Weitere Listings[Bearbeiten]

Mittlerweile ist es schon bald 20 Jahre her, wo ich zuletzt auf dem C64 programmiert habe. Von daher kriegt man schwer wieder den roten Faden hinein. Könnte man hier evtl. noch folgende Listing-Beispiele hinzufügen? :

  • a) Wie ich die Scripts verändern muss, so dass ich die Zeichensätze von A bis Z bearbeiten kann
  • b) Wie man Zeichen für Zeichen die POKEs programmiert, so dass man u.a. im Beispiel "Deutsche Umlaute" das Ü auf das Klammeraffen-Zeichen setzen kann und nicht nur die nach dem Zeichenspeicher aufeinanderfolgenden Zeichen verwendet werden

Das Script, was ich früher für die Zeichensatzänderung geschrieben habe, sah noch etwas anders aus, aber heute kriege ich es nicht mehr auf die Reihe. Ich glaube, damals sahen die POKEs folgendermaßen aus, dass ich dort die Adresse für den Zeichenspeicher so gescriptet habe, dass ich für jedes Zeichen dann einen POKE mit 12302+X hatte, wobei für X dann die Zahl für das jeweilige Zeichen eingetragen wurde 1=A, 2=B, 3=C, usw.

Danke schon mal!

Zu b) Das Listing mit den Deutschen Umlauten ä,ü,ö,ß ist unten als Beispiellisting zu finden und wird eigentlich ausführlich erklärt. Was gibt es da Misszuverstehen?
Zu a) Das Beispiellisting kopiert immer den ganzen Zeichensatz aller Zeichen (0-255) in den RAM-Bereich von 12288 bis 16383. Man kann immer somit alle Zeichen verändern. Aus einfachen Gründen wurden hier nur 4 Zeichen verändert. Es fängt wie man liest beim 27.Zeichen, dem Zeichen [ an. Die erste Zeile für den Speicherbereich mit dem @ (dem 0.Zeichen) beginnt also folglich 12504-(27*8) = 12288. Da ein Zeichen aus 8*8 Punkten besteht, werden pro Zeichen immer 8 Bytes (Zahlen) benötigt, die sagen welche Punktreihenfolge die jeweilige Zeile besitzt. Möchtet Du z.B. nur das Zeichen @ verändern, schreibst Du die entsprechenden Werte in den Speicherbereich 12288 bis 12295. Weitere Informationen stehen eigentlich im Artikel.
Um Zeichen zu verändern, muss man sich leider - außer man nutzt entsprechende Zeichensatzgeneratorprogramme - mit der Theorie beschäftigen. Dazu gehört auch das man diesen Artikel durchliest und probiert durch eigenes Programmieren am C64 bzw. C64-Emulator die Zeichen zu verändern.
PS: Bitte signiere Deine Beiträge. --Jodigi 23:15, 4. Jul. 2012 (CEST)