Leider habe ich es nicht geschafft deinen Codeschnipsel VICE zu übertragen.
Falls Du versucht haben solltest, die Copy-und-Paste-Funktion von VICE einzusetzen: die ist seit jeher für alles ungeeignet, was Steuerzeichen enthält. Auch die meisten Zeichen die mit der CBM-Taste eingegeben werden, "kommen" nicht richtig mit.
Ich verwende hier eine eigene Methode um (Steuer-)Zeichen von PETSCII zu quoten, die aber ohne Probleme nachvollziehbar sein sollte. Die geschweifen Klammern kommen selber in PETSCII nicht vor, alles innerhalb ist gequotet. Heißt: Eingabe von Hand im Hauptfenster von VICE ist hier angesagt.
Bei dem Beispiel macht es keinen Sinn eine *.prg-Datei mitzuliefern. Die Zeile muß man im Direktmodus eingeben. Macht man mit einer Zeilennummer ein Programm daraus, zerstört man beim Einladen genau das, was mit der OLD-Routine eigentlich hätte gerettet werden sollen.
Ich habe deswegen dieses Beispiel gewählt, weil es kurz ist und trotzdem schon zeigt worum es geht.
Deshalb verstehe ich wahrscheinlich nicht die ganze Idee. Soll man, ganz auf READ&DATA verzichten und stattdessen die Werte mit PRINT auf dem BS ausgeben um sie anschließend an die gewünschte Speicherstelle zu poken???!!!
Ja, das hast Du schon richtig verstanden. ![]()
Wenn "ja" müssen doch aber die Werte für den Print-Befehl aufbereitet werden und ich hätte das gleiche Problem wie jetzt. Wie codiere ich Werte zwischen 0-255?
Mit PRINT kannst Du alle Werte von 0..255 im Bildschirmcode erzeugen! Normale Zeichen von 0..127 gehen im {RVS OFF}-Modus, inverse Zeichen gehen im Bildschirmcode von 128..255 und brauchen ein vorangestelltes {RVS ON}. Bei mehreren inversen Zeichen direkt hintereinander reicht ein {RVS ON} davor aus, gleiches gilt für mehrere normale Zeichen direkt hintereinder. {RVS ON} und {RVS OFF} kommen also nur beim Wechsel zwischen den Wertebereichen 0..127 und 128..255 zum Einsatz und darum braucht man im Regelfall weniger als zwei Zeichen (1 Steuerzeichen + 1 druckbares Zeichen) pro Byte.
Und wo ist dann der Vorteil zu READ&DATA ...?
Du brauchst keine spezielle Dekodierroutine. Übertragen des Bildschirminhalts reicht.