Hello, Guest the thread was called726 times and contains 26 replays

last post from Telespielator at the

Zeichensatzdefinition am VC20

  • Ich habe vor, in den nächsten Tagen meinen VC20 rauszukramen und ein kleines BASIC-Spiel für die Grundversion zu realisieren.

    Dazu würde ich gerne den Zeichensatz modifizieren, um einfache animierte Grafiken darstellen zu können. Leider habe ich sowas

    bisher noch nie gemacht. Wie funktioniert das von BASIC aus (also ohne Assemblerroutinen und ohne separates Programm)?


    Ich nehme an, ich muss den Zeichensatz ins RAM kopieren und kann dann dort Bits setzen oder löschen per POKE, muss aber

    dem Betriebssystem auch mitteilen, dass der Zeichensatz jetzt vom RAM gelesen werden soll, stimmt das so in etwa?


    Wieviel RAM frisst sowas?


    Danke für Eure Hilfe! :thumbup:

  • Danke! :thumbup: Sowas habe ich gesucht, das lese ich mir mal durch. An dem Buch wäre ich auch mal als gedrucktem Exemplar interessiert, natürlich noch lieber auf Deutsch. Auf dem VC20 habe ich nämlich bisher kaum was gemacht und gute Literatur dazu fehlt mir leider auch.


    Plattfuss : Danke! Ich hoffe, ich komme mit der Grundversion aus. Eine RAM-Erweiterung habe ich, aber die soll möglichst nicht gebraucht werden.

  • Der Programmer's Reference Guide ist aber nicht mit dem deutschen VC20 Programmierhandbuch identisch, oder?

  • Leider nicht. Der Aufbau ist komplett unterschiedlich. Im Programmierhandbuch fehlt auch der Abschnitt zur Maschinensprache.


    Der Reference Guide ist sehr gut, das Programmierhandbuch ist eher mittelmäßig.


    Ich weiß nicht, ob es eine vollständige Übersetzung vom Programmers-Reference-Guide gibt. Wenn du eine kennst sag bitte Bescheid.


    Wenn du Zugriff auf die Wolke hast kannst du beide Bücher vergleichen.


    aitsch

  • Das Programmierhandbuch habe ich inzwischen bei meinen Sachen gefunden, das ist tatsächlich was anderes. Schade.

  • Hey Telespielator : Habe hier neu ein Buch bekommen, dass Deine Frage ganz gut erklärt: "Owen Bishop - VC20 für Fortgeschrittene", deutsch, aus dem mvg Verlag, Reihe "Computer lernen" (Originaltitel: "Get more from the VIC20"). Da gibt es ein Kapitel, wie man Zeichen und Multicolor-Zeichen bastelt und dann im Basic poked. Kann ich Dir gerne ausleihen.

    aitsch Seh gerade, dass Du das pdf hier verlinkt hast, damit sollte der Tele ja schon klarkommen, aber von mir auch ein "Supercool! Danke!"

  • Owen Bishop

    Von dem habe ich das "VC20-Spielebuch" aus der Commodore Sachbuchreihe (gibt's dazu eigentlich irgendwo einen Überblick?)

    Kann ich Dir gerne ausleihen.

    Danke, darauf komme ich im Bedarfsfall gerne zurück.

    damit sollte der Tele ja schon klarkommen

    Ich denke, schon. Für's Erste jedenfalls.

    Wir können uns das gerne zusammen auf der doreco anschauen.

    Bis dahin wollte ich es eigentlich fertig haben (auch wenn mein Leben gerade mal wieder andere Pläne mit mir hat)... Mal gucken! ^^

    Bei 3,5 KB müssen wir dann aber schon "wählerisch" bei der Auswahl der Zeichen sein, die wir umdefinieren wollen. :D

    Ach, für das, was ich vorhabe, sollte der VC20 in der Grundversion eigentlich locker ausreichen. Sonst könnte ich ja auch den C64 nehmen. Aber für den gibt's schon genug Releases... ^^ Wenn ich das aus dem PDF richtig verstanden habe, gehen durch Zeichensatzdefinition 512k verloren. Man muss ja den gesamten Zeichensatz ins RAM kopieren, da kommen dann nur noch die DATA-Zeilen hinzu, die die neuen Zeichen definieren, das wird aber nicht so viel. Ein wesentlicher Teil des Spiels findet ohnehin vor dem Rechner statt und nicht auf dem Bildschirm. Aber mehr möchte ich momentan nicht verraten, sonst schüre ich Erwartungen, die ich nachher nicht bedienen kann. Muss morgen erstmal Zeit finden auszuprobieren, ob mein VC20 überhaupt noch funzt... (bitte Daumen drücken!). :)

  • Du musst den gesamten Charset copieren.

    Wenn du das nicht machst siehst du nur dein Char welches du verändert hast.

    Der andere Charteil ist müll.


    Siehe beide Bilder , einmal gesamte Char kopiert und einmal nur 1 Char.

    Alles geschieht ab Adresse 5120 . Wie du das ohne Speichererweiterung machst und mit deinem 3,5k Basic ....?


    Damit legst du fest wo der neue Charset-Raum liegt : poke 36869,192+13

    Der normale Charset-Raum ist hier : 32768-36836


    Ich habe es mit Mospeed compiliert : https://www.c64-wiki.de/wiki/MOSpeed

    MOspeed macht aus dem Basic-Datei ein P-Datei. Hat dadurch eine ASM-Geschwindigkeit.


    Sonst dauert das sehr lange nur mit dem Basic 2047 Byte herum-poken.


    Die 2 Basic unten kannst du so verwenden.


    Ich spiele nur mit dem MiSTer : VIC20 und den CPC6128/CPC464

    Beide gefallen mir sehr gut , weil man bei beiden schöne Experimente machen kann.


    Ich habe beim MiSTer_Core den VIC20 auf 28kb gestellt , geht auch bei 8KB.

    Hier eine feine Speicheraufteilung : https://www.c64-wiki.de/wiki/VC_20


    Gesamte Char in den Charset-Raum :5120

    Code
    1. 10 for i=0 to 2047
    2. 20 poke 5120+i,peek(32768+i)
    3. 30 next i
    4. 40 poke 36869,192+13
    5. 50 for j=0 to 7
    6. 60 read a
    7. 70 poke 5128+j,a
    8. 80 next j
    9. 1000 data 255,129,129,129,129,129,129,255


    Und einmal nur 1 Char geändert im Charset-Raum. Da bei Adresse 5120 dieser Buchstabe @ ist (wenn der gesamte Char drin ist), muss ich 8 Byte zuzählen um das "a" bei Adresse 5128 zu ändern um mit "print a" mein Sonderchar zu sehen.

    Code
    1. 40 poke 36869,192+13
    2. 50 for j=0 to 7
    3. 60 read a
    4. 70 poke 5128+j,a
    5. 80 next j
    6. 90 print "a"
    7. 1000 data 255,129,129,129,129,129,129,255


    Gruss

  • Und so wild sieht es aus, wenn du den VIC20 zum Grafikmodus überredest , nur eine Linie Zeichnen:



    Dieses musst du hier vor dem Basicstart eingeben : poke 44,34:poke 34*256,0:new


    Gruss

  • Der wesentliche Teil findet im VIC20 und nicht vor dem VIC20 statt.


    Es sind nicht nur Datazeilen. Es müssen die Zeichen gesetzt werden mit Farbe und mit Tastenbedienung versetzt werden falls etwas Bewegung auf dem Schirm gesehen werden soll. Es findet ein Kreislauf von nicht wenigen Abfragen und Zuständen statt die geändert werden müssen, ohne dem läuft nichts.


    Da ich mit dem MiSTer und dem VIC20-Core mein Speicher vergrößern kann , spiele ich mit einem 2. Pseudo-Screen und kopiere den dann wenn er fertig ist über den 1. Screen, dann wirkt das Textspiel ruhiger.



    Eine kleine einfache Textdemo mit Farbwechsel :

    Mit W/S/A/D wird die Textkugel gesteuert und mit R/F die Farbe geändert.

    Es gibt schon viele Sonderzeichen im Charset mit denen man schöne Textspiele machen kann ohne einen neuen Charset anzulegen

    Kannst die Adressen und Poke mal mit deine Bücher raussuchen zum lernen.


    Gruss

  • Ohne Speichererweiterung hast du 3,5 kb frei.


    Bei dir fängt der verlegte Charram dann auch bei 5120 Byte an, anders geht es nicht. Kopieren brauchst du dann nur 2048 Byte und nicht die ganzen mit 4096 Byte.

    Dein Basic fängt bei 4096 Byte an.

    Du hast dann nur noch freies Basic von 5120 - 4096 , hast dann nur noch 1024 Byte frei.


    Frei für dein Charram hast du 7679 - 5120 , sind dann 2559 Byte.

    Ich weiss jetzt nicht ob das bei dir überhaupt zum laufen kommt.


    Fazit : Ohne eine Speichererweiterung kannst du dein Spieltraum vorläufig wegschließen , bis du eine Speichererweiterung bekommst.

    Außer du spielst mit den mitgelieferten Char.


    Der Farbram spielt bei der 5120 Byte -Adresse auch eine Rolle.


    Gruss

  • Quote

    Bei 3,5 KB müssen wir dann aber schon "wählerisch" bei der Auswahl der Zeichen sein, die wir umdefinieren wollen.


    Da nützt kein "wählerisch" , du kannst immer nur einen Raum von mindestens 2048 Byte ansprechen , ob du den brauchst oder nicht.


    Gruss

  • Code
    1. 10 FORI=7168TO7679:POKEI,PEEK(I+25600):NEXTI
    2. 20 POKE36869,255
    3. 30 FORC=7328TO7328+7
    4. 40 READA:POKEC,A:NEXT
    5. 50 DATA60,66,165,129,165,153,66,60

    Es geht auch ohne Erweiterung.

    So verliert man "nur" 512 Byte vor dem Screen RAM + der neu definierten Zeichen und dem Code drumherum.

    Ab Zeichen 64 wird es dann etwas wild aber ich denke, so kann man arbeiten.

    Bleiben also rund 2,5 - 3k für das restl. Programm (hängt dann von der Anzahl der umdefinierten Zeichen ab).

    (wie bereits erwähnt.)

  • Owen Bishop

    Von dem habe ich das "VC20-Spielebuch" aus der Commodore Sachbuchreihe (gibt's dazu eigentlich irgendwo einen Überblick?)

    Von der alten Commodore Sachbuchreihe gibt es Band 2 und 5 für den VC-20. Band 2 ist das Programmierhandbuch als Buchform (inhaltlich identisch mit dem Programmierhandbuch in Ringform). Band 5 ist das VC-20 Spiele-Buch von Owen Bishop.


    Das VC-20 Spiele-Buch gibt es allerdings auch aus dem mvg-Verlag, wobei im mvg-Verlag einige VC-20 Bücher erschienen sind, allerdings englischsprachige Werke, die dann ins deutsche übersetzt wurden. Alle müßten von 1984 sein. Ich habe nur folgende hier:


    Das VC-20 Spiele-Buch (The VIC-20 Games Book - 21 Challenging Games) mit 150 S.

    Das grosse VC-20 Spiele-Buch (Winning games on the VIC-20) mit 150 S. (von Terry Barret & Antonia Jones)

    VC-20 für Fortgeschrittene (Get more from the VIC-20) mit 176 S.


    und noch ein echtes deutsches Werk:

    Lernprogramme für den VC-20, mit 176 S. (von Michael Geipel)


    Der mvg-Verlag (steht übrigens für moderne verlags gesellschaft mbH) hat daneben aber auch eine Vielzahl an Büchern für den C-64 veröffentlicht.

  • Quote

    Ab Zeichen 64 wird es dann etwas wild aber ich denke, so kann man arbeiten.

    Mit dem Kleinkram kann er auch bei dem originalen Char bleiben der auch wunderbar bestückt ist.

    Damit werden die wichtigen schon vorhandenen Char abgeschnitten. Am besten ist es sogar über den Rand von 2048 Byte gehen wenn das Spielprogramm ansehnlich werden soll.


    Aber ich freue mich das ihr jetzt endlich mal aus euren Startlöchern kommt und den Jungen nicht so lange hängen lässt , Bewegung tut gut im Geschäft. Taten und Vorschläge sind gut und nicht nur Vorschläge ohne Taten.


    Den VIC20 interessiert hier fast keiner habe ich schon festgestellt. Es sind hier längere Zeit keine vernünftigen Geschehnisse abgelaufen.

    Still ruht der See.


    Ich hoffe das sich das mal ändert und mehr leben rein kommt, sonnst macht es hier kein Spass.


    Jetzt seid ihr ja da und ich kann mich wieder meinem MiSTer widmen und den CPC6128.


    Gruss