Hat schon mal jemand dem VC20 deutsche Umlaute verpasst, nicht als ROM-Umbau, sondern mittels Software?
VC20 Basic und Umlaute
-
-
Hat schon mal jemand dem VC20 deutsche Umlaute verpasst, nicht als ROM-Umbau, sondern mittels Software?
Das funktioniert beim VC-20 eigentlich fast genau wie beim C64.
Je nach Speicher Ausbau unterscheidet sich beim VC-20 die Memory Map was es etwas komplizierter macht.Hier ein Artikel dazu: https://www.64er-magazin.de/8409/deutzei.html
Hier findest du einen Zeichensatz Editor: https://github.com/davervw/ch20edit
-
Danke, diese Lösung habe ich schon getestet. Läuft als "standalone" gut, sobald man aber ein Basic-Programm lädt, passiert entweder gar nichts oder die neuen Zeichen sind absolut unlesbar.
Möglicherweise liegt es an meiner 35k-Speichererweiterung.
-
Die Lösung ist dafür gedacht um in ein bestehendes BASIC Programm eingebaut zu werden, also am einfachsten davor, was aber meist auf Grund der Zeilennummern schwer ist oder als GOSUB Routine am Ende.
Ich kann dir helfen das in dein BASIC Programm zu integrieren, wenn du mir das Programm zur Verfügung stellst.
Die Zeile 110-120 schreiben die 35 Byte ML-Routine aus den Datazeilen 510-530 ab der Adresse 700 in den Speicher.
Zeile 130 verlegt den Bildschirmspeicher, das erste POKE teilt es dem VIC mit, das zweite POKE teilt es dem KERNAL mit, das CLR bereinigt den verschobenen Variablenspeicher.
Zeile 140 startet die ML-Routine welches das original CHARROM Set 2 in den Bereich $1000-17FF kopiert.
Zeile 150 durch das CLR müssen die Datazeilen 510-530 erneut gelesen werden um den Pointer auf Zeile Datazeile 540 zu setzen.
210-360 ersetzt die Umlaute aus den Datazeilen.
Zeile 410 schaltet die Großkleinschreibung ein und aktiviert damit den neuen Zeichensatz.Das Bedeutet Software die den Großbuchstaben Zeichensatz Set 1 benutzt wird so nicht unterstützt.
Man kann auch den den fertigen Zeichensatz aus einer Datei lesen ist aber vergleichsweise sehr langsam.
Also was wird dann benötigt:
1 POKE 36869,236 : POKE648,24 : CLR
2 OPEN 1,8,2,"CHARSET2,S,R"
3 FOR I=4096 TO 6143
4 GET#1,B$
5 B=0:IF LEN(B$)>0 THEN B=ASC(B$)
6 POKE I,B
7 NEXT I
8 CLOSE 1
9 POKE 657,128
10 REM HIER FAENGT DEIN PROGRAM AN -
Der letzte Vorschlag hat mir gefallen, funktioniert aber auch nicht.: unlesbare Zeichen am Bildschirm. Offensichtlich passt der RAM-Bereich nicht.
-
Der letzte Vorschlag hat mir gefallen, funktioniert aber auch nicht.: unlesbare Zeichen am Bildschirm. Offensichtlich passt der RAM-Bereich nicht.
Hast du das Prozedere auf Seite 80 beachtet?
1. Du musst das Program abspeichern
2. NEW [RETURN]
3. Folgende Zeile eingeben: 1 POKE 44,26:POKE 6656,0:PRINT CHR$(3):RUN [RETURN]
4. POKE 44,26:POKE 6656,0 [RETURN]
5. NEW [RETURN]
6. Das eben gespeicherte laden
7. POKE 44,18 [RETURN]
8. Dann erneut abspeichern.
Erst diese Version ist funktionstüchtig.
Was passiert hier?
An der normalen Basicstartadresse steht am Ende die eine Zeile unter 3.
Das eigentliche Program steht an der neuen Adresse und wird durch die Zeile aufgerufen nach dem der Start geändert wurde. -
Habe ich berücksichtigt. Funktioniert auch alleine, jedoch das folgende Nachladen eines Basic-Programms nicht: Müll am Bildschirm. Selbes Ergebnis, wenn man den Zeichensatz direkt lädt.
-
Hab doch gesagt ein nachladen klappt nicht, Du musst es integrieren.
-
Ich habe auch das Integieren getestet: in den Code einige einfache Zeilen mit REM oder PRINT "otto" integriert, dann wie #6 behandelt, gestartet. Geht nicht.
Auch dein Vorschlag aus #4 unten führt zu Müll am Bildschirm. Das sieht so aus, als würden die Character an falscher Stelle gesucht. Da stimmt etwas mit den Adressen nicht!
-
Auch dieser benötigt diese seltsame Speicher- und Ladeorgie.
Es würde mir helfen wenn du einfach mal dein Basic Programm zur Verfügung stellst dann kann ich selbst einmal testen.Dein später geladenes BASIC Program muss nach $1A00 geladen werden nicht wie üblich nach $1200.
Ein Druck auf RUN STOP/RESTORE ist böse und macht das ganz kaputt.
POKE 36869,236:POKE 648,24:CLR bringt es wieder in Ordnung.
Angehängt ist die PRG für den VC-20. -
Bezüglich Anhang: das gleich Ergebnis hatte ich auch mehrfach! Trotzdem danke!
Bei der Grundversion VC20 liegt der Video-RAM ab 4096, ab 8k-Erweiterung bei 4608:
Möglicherweise liegt hier das Problem.
Ein einfaches Basic-Programm zum Integrieren wäre:
100 rem
110 print "otto"
120 end
Bei mir funktioniert das schon nicht!
-
Hab es gerade im Online Emu probiert aber der ist zu intelligent und ändert immer die RAM Konfiguration auf eine unpassende.
-
Man kann die Daten natürlich statt nach 4096 auch nach 4608 laden. Aber wo steht, wo diese zu finden sind? Mit POKE 36869,236:POKE 648,24 kann ich nichts anfangen!
-
Alo bei mir funktioniert das zumindest das Original.
Für mehr hatte ich keine Zeit.Das die entsprechend behandelte Version vom DEUTZEI.PRG habe ich als GERMAN.PRG abgespeichert.
Schalte ich jetzt den VC20 an lege diese Diskette ein und tippe LOAD"*",8 [RETURN] ein.
Dann starte ich es mit RUN [RETURN]
Mir werden die neuen Zeichen angezeigt.
Ich tippe ein LOAD"TEST",8 [RETURN]
und starte dann mit RUN [RETURN] und mein Testprogram zeigt ebenfalls Umlaute. -
Läuft bei mir auch. Ein eigenes Basic-Programm aber nicht.
Möglicherweise liegt es an der Startadresse (0400, 0800, 1200, 1a00)?
Wie verschiebe ich denn die Ladeadresse nach 1a01?
-
Wenn du es mir zur Verfügung stellst schaue ich gerne mal warum das so ist.
-
Anbei das Programm.
-
So habe es mir angeschaut.
Du hast zwei Möglichkeiten:
Du lädst zuerst GERMAN.PRG und startest es.
Dann lädst du WORT2.PRG und startest es.Oder alternativ habe ich beide Programme zusammen gebaut TEST.PRG
Das Problem war das PRINT CHR$(14) in der ersten Zeile.
Ich weiß nicht warum, aber mit einem eigenen Zeichensatz scheint es auf Set 1 (Groß + Grafik) statt wie es eigentlich sollte auf Set 2 (Groß & Klein) umzuschalten. Da Set 1 nicht definiert ist kommt nur Müll.
Die Umschaltung ist aber gar nicht notwendig da sich der VC20 bereits im Groß & Klein Modus befindet.
Da das Program welches den deutschen Zeichensatz lädt mit POKE 657,128 in den Groß & Klein Modus schaltet. Daher habe ich es einfach auskommentiert.
Das nette daran so hat man automatisch noch einen Listschutz.
Da ein List nach dem Laden nur eine Zeile anzeigt. -
Wow! Nur dieses Chr$(14)!!
Mit dieser Lösung kann ich arbeiten!
Jetzt muss ich nur noch den Characterset so hinbiegen, dass er zu den Tastenbelegungen des Programms passt:
* : Ä und ä
@ : Ü und ü
Pfund-Zeichen: Ö und ö
ß passt bereits
Das Ö kann ich bei der derzeitigen Belegung nicht finden!
-
Display More
Wow! Nur dieses Chr$(14)!!
Mit dieser Lösung kann ich arbeiten!
Jetzt muss ich nur noch den Characterset so hinbiegen, dass er zu den Tastenbelegungen des Programms passt:
* : Ä und ä
@ : Ü und ü
Pfund-Zeichen: Ö und ö
ß passt bereits
Das Ö kann ich bei der derzeitigen Belegung nicht finden!
Hier werden alle Zeichen zweimal angezeigt.
Es sind die Grafikzeichen die auch bei Groß & Kleinschreibung möglich sind also das große +, | und das halbe Raster. -
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!