ZEICHENSATZ-PROGRAMMIERUNG

Es gibt 42 Antworten in diesem Thema, welches 7.075 mal aufgerufen wurde. Der letzte Beitrag (2. Juli 2025 um 20:50) ist von goloMAK.

  • (links original-Zeichensatz, rechts PXLfont)

    Ich denke, das ist jeweils individuell unterschiedlich vom Empfinden.

    Ich zum Beispiel kann das Listing mit dem Originalfont besser lesen, vermutlich weil die Buchstaben größer dargestellt werden. Ich empfinde das rechte Listing anstrengender zu lesen.

  • Ich denke, das ist jeweils individuell unterschiedlich vom Empfinden.

    Deswegen hatte ich ja gefragt. Es gibt objektive Faktoren (z.B. größerer Zeilendurchschuss = bessere Führung des Auges) aber halt auch subjektive.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Jo, mit den Zeichensatz-Routinen ist prinzipell schon fast alles möglich.

    Und im oberen C64 Bereich stehen 16 kB zur freien Nutzung auch von Basic aus bereit.

    Das sind 7 Zeichensätze mit je 2 KB

    Oder 1 Grafik-Bitmap + Farbram mit 9 KB
    Oder 1 Bildschirm + 1 Zeichensatz + 80 Sprites mit 64 Byte
    Oder 8 Bildschirme mit 1KB
    Oder gemischt, 1 Grafik-Bitmap + Farbram(9kB) + 2 Zeichensätze(4kB) + 1kB Bildschirm-Ram + 2kB Sprites

    Schönen Gruß.

  • Retrofan Mir gefällt dein Zeichensatz sehr gut. Er ist gut lesbar und nicht zu aufgetragen. Kann man sich den irgendwo herunterladen? Ich würde ihn gerne für mein erstes ASM-Projekt verwenden.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Kann man sich den irgendwo herunterladen?

    Klar, hier:

  • Retrofan Wow, vielen lieben Dank! Das sieht viel cooler aus. Wenn ich noch irgendwelche Credits mache, werde ich dich natürlich erwähnen. Aber wie? Als Retrofan@forum64?

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Wenn ich noch irgendwelche Credits mache, werde ich dich natürlich erwähnen. Aber wie? Als Retrofan@forum64?

    Danke. Und ja, die Angabe passt schon. Mehr Infos zum Font bekommt man in meinem (nicht gut gepflegten) Blog. Adresse siehe Signatur.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Z10: GROßSCHRIFT-STRING-GENERATOR

    Bitte melde dich an, um diesen Anhang zu sehen.

    Will man die Großschrift-Zeichen schneller ausgeben, als im Spiel (G)MERKERS, dann ist es empfehlenswert die Schriftzeichen schon in einem Stringfeld bereit zu halten.
    Das Programm erzeugt die Schriftzeichen-Strings als Basic-Programm-Code.
    Als Unterprogramm benutze ich wieder das String-Kopie Unterprogramm.
    Die Strings werden dabei ab Zeile 5000 an das Programm angehängt.
    Danach startet der 10-Zeiler mit der Zeichenausgabe dann noch eine kleine Demo.

    Schönen Gruß.

  • Großschrift-Generator-Listing:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Hier kommt noch mal das Listing zum Großschrift-Generator.
    In Zeile 4 hab ich bei PostBitte melde dich an, um diesen Link zu sehen. noch einen Fehler entdeckt, den ich hier korrigiert habe.
    Das Problem lag darin, daß ich bei PostBitte melde dich an, um diesen Link zu sehen. das Zeilenbinden, SYS42291 erst nach dem Setzen des Programmendes mit :SYSB: gemacht habe.
    Logischerweise hat man dann aber den Variablenbereich umgestellt.
    Die Sache ist nicht aufgefallen, weil es bei PostBitte melde dich an, um diesen Link zu sehen. anscheinend trotzdem keinen Absturz gab, auch wenn da natürlich die Frage besteht, wo SYSB dann hinspringt.

    Zeile 0-1: Zeichen-Ausgabe
    Zeile 2: Programmende hochsetzen

    Zeile 3: Stings generieren und ins Programm schreiben
    Zeile 4: Programmende setzen und Zeilen binden.

    Zeilen5-8: Basic-Zeilen als String erzeugen
    Zeile 9: Zeilen-String ans Basic-Programm anhängen.

    Schönen Gruß.

  • Selbstverständlich kann man den Großschrift-Stringgenerator auch mit den anderen Programmen kombinieren.

    Z.B. Wenn man zuerst Z10:Deutsche Umlaute installiert kann man natürlich auch die neuen Umlaute in Strings umwandeln.

    Dazu muß man lediglich statt :poke1,51: :poke1,48: (Zeile6) wählen und schon liest der C64 das unter dem Zeichen-ROM liegende RAM.

    Und falls man einen Zeichensatz nach 49152 läd kann man natürlich die Leseadress a (Zeile3) darauf einstellen.

    Nach der String-Installation kann der Installer natürlich auch wieder aus dem Programm gelöscht werden, da er nicht mehr benötigt wird.

    mit gosub5032 können dann die Großzeichenstrings schnell installiert werden und stehen zur schnellen Zeichenausgabe bereit.


    Schönen Gruß.

  • Z10: LAUF-SCHRIFT(4x40):

    Bitte melde dich an, um diesen Anhang zu sehen.

    Hier hab ich mal probiert eine 4x40 Laufschrift-Demo in 10 Zeilen zu programmieren, die in jeder Zeile funktioniert, sogar mit SYNC.
    Mit einem Tastendruck schaltet man jeweils eine Zeile weiter, so daß man alle Zeilen 1-21 durchtesten kann.
    Und wie man sieht kann man sogar Farbcodes benutzen.
    Den SYNC sollte selbst das Drücken der Shift-Taste nicht durcheinanderbringen.


    Schönen Gruß.

  • Z10: 2x2 ZEICHENSATZ-GENERATOR:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Hier kommt der 2x2-Zeichensatz-Generator der 2x2 Schriftzeichen aus dem Orginal-Zeichensatz erzeugt.

    Die Grundlage bildet dabei wieder ROM-RAM, dabei ist noch ein kleines Sting-Ausgabe-Demo.

    Schönen Gruß.

  • Moin. Den Beitrag Bitte melde dich an, um diesen Link zu sehen. hier aus dem Thema bekomme ich nicht zum Laufen

    Ich bekomme immer ein.

    ?return without gosub error in 35

    Endweder habe ich falsch kopiert, da es kein .PRG gab oder niemand hat es je ausprobiert.

    Ich hätte es gerne mal getestet, da ich nach einer schnellen, kurzen und einfachen Zeichensatz Kopierroutine gesucht habe,

    die dann Umlaute und ander 5 Zeichen einbaut und trotzdem ohne verschieben von Bildschirmen usw hinter meinem Basic Programm liegt.

    Wollte mir das eigentlich aus Cactus-Jack klauen. ich dachte ich finde was anderen und stolperte nun hier drüber.

    So wie ich es sehe, soll das Programm den Zeichensatz mit SAVE"MOD",8 speichern. Aber soweit kam ich nun nicht.

    Ich bitte um Hilfe, reise ins Jahr 2020 ist kostenlos, aber dann können wir da vielleicht den Fehler beheben.

    Vielleicht hilft es ja jemandem.

    Hier nochmal das Programm

    0 :b=8::rem---prg+zeichensatz

    10: poke2,b:poke46,peek(46)+b:clr:b=peek(2)*256

    12 :gosub20:gosub30:gosub35:save"mod",8:end

    19 :

    20 :a=peek(45)+peek(46)*256-b:h=53248:return

    29 :

    30 :rem---zeichen kopie

    31 :c=peek(1):poke56334,.:poke1,c-4

    32 :fori=.tob-1:pokea+i,peek(h+i):next

    33 :poke1,c:poke56334,1:return

    34 :

    35 :poke46,peek(46)+1:clr:b=256:gosub20:fori=atoa+b-1:pokei,1:next:return

  • Ich schätze mal, das Auslagern für Zeile 35 war etwas ungeschickt. Das CLR löscht doch alle Daten, dann ist auch der Stack für das RETURN futsch.

    Geht vermutlich, wenn der Inhalt von Zeile 35 ohne GOSUB angegangen wird, also GOTO oder direkt oben eingesetzt.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Ich schätze mal, das Auslagern für Zeile 35 war etwas ungeschickt. Das CLR löscht doch alle Daten, dann ist auch der Stack für das RETURN futsch.

    Geht vermutlich, wenn der Inhalt von Zeile 35 ohne GOSUB angegangen wird, also GOTO oder direkt oben eingesetzt.

    Ach Mist. Habe CRL übersehen. Klar. Danke

    Ich war schon kurz davor 35 als andere Zeile zu kopieren und den GOSUB Aufruf in GOTO zu ändern. Habe dann leider zu früh ausgegeben.

  • Ich wollte eigentlich nur, wie der Themenersteller. Zeichensatz nach 12288 oder was noch später geht klemmen.

    Habe mir deshalb mit C64Studio drei Zeichensätze 3000, 3500, 4000 erstellt. Und wollte mal sehen was noch so geht-

    Ich klatsche die eigentlich immer nach 3000 und mit 53272,28 oder 29 sind sie da.

    Nun hatte ich 3000, 3500, 4000 mal in den Speicher geladen und wollte mit TASTE 1 von 21 bis 35 mal durchschauen was da passiert.

    Wann ich was sehen außerhalb von 20,21 und 28,29.

    Irgendwie sind die Bits 3210 wohl für den jeweiligen 256er Block da. Aber so richtig Begriffen habe ich das nicht.

    Was muss denn 53272,xx haben damit es einen Block weiter geht nach 12288 ? Ist das dann 12288+256 = 12544

    28 = 11100 (Aber wo ist das dann ?

    29 = 11101 (warum geht das auch und ist nicht verschoben)

    Irgendwie begreife ich das alles nicht mehr in meinem hohen Alter :)

    Google hat mich hier zu dem Thema gebracht. Aber am Ende kann ich Bildschirm verschieben, 49152 mein Zeichensatz packen. Aber ich will nur dicht hinter das Basic.

    12288 und irgendwie noch ein Stück weiter.

  • 53272 ($d018) hat 8 Bits. Die oberen 4 Bits geben an, wo der Bildschirmspeicher (innerhalb der aktuellen VIC-Bank!) liegt:

    Default hat die Adresse den Wert 21 (binär 0001 0101).

    Die linken 4 Bits (also der Wert 1 (0001)) mit 1024 multipliziert ergibt die Bildschirmadresse (1 * 1024)

    Die Bits 3 bis 1 (nummeriert 76543210) legen fest, wo der VIC den Zeichensatz sieht. Das Bit 0 wird ignoriert.

    Der Wert aus Bit 3 bis 1 ergibt 2 (010). Der Zeichensatz kann immer nur in Abständen von 2048 Bytes platziert werden. 2 * 2048 = 4096.

    Aber das ist doch im BASIC-RAM??
    Überraschung: Der VIC hat noch die Besonderheit, dass er bei den Adressen $1000 bis $1fff, bzw. $9000 bis $9fff den Zeichensatz aus dem ROM eingeblendet sieht. An diesen Adressen kann man keinen anderen Zeichensatz verwenden.
    Deshalb klappt das aber auch mit 4096.

    Da der VIC per Default in der 3. Bank (irgend ein Scherzkeks hat die verkehrt herum nummeriert) liegt (von 0 bis 16383), kann man den Zeichensatz maximal auf $3800 (14336) hochsetzen.
    Sonst müsste man anfangen, die VIC-Bank (und damit auch den Bildschirm und die Sprites zu verlagern).

    Für die Adresse 14336 und Bildschirm bei 1024 musst du also POKE 53272, 1 * 16 + 7 * 2, also POKE 53272,30 setzen.

    1 = 1024 / 1024
    7 = 14336 / 2048

    Dann musst du dich aber auch um alle Zeichen selbst kümmern.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Genial. Danke. Nun habe ich das endlich kapiert.

    Bildschirm 1024 woanders, dass habe ich letztes Jahr kapiert.

    Zeichensatz nur zu 90%. Bit 0 war also der kleine Schlingel, der mich verwirrt hatte

    und das es immer diese Abstände von 2048 Bytes braucht.

    Das erklärt warum nie 4000 klappte und meine anderen 3000 +256 usw Versuche.

    Zeichensatz aus C64Studio exportiert 3800 und geladen und zack bei 30 bei meinem

    kleinen Anzeigeprogramm sehe ich die Zeichen.

    Danke