Hello, Guest the thread was called2.4k times and contains 31 replays

last post from Snoopy at the

MEGA65 - Tipps und Tricks - Sammelthread

  • Ich habe gerade für ein anderes Beispiel zwei kleine Unterprogramme geschrieben, die es erlauben, einen Textscreen intern zu sichern (save) und auch wiederherstellen (restore) zu lassen. Ich dachte, ich stelle das mal einfach hier rein.


    Theoretischer Zusatz (kann überlesen werden! :D ) : Falls man keine Bitmap-Grafik (SCREEN 320 / 640 ---) verwendet, dann ist in der Regel die Bank 4 unbenutzt. Dieses Beispiel verwendet in Bank 4 den Bereich ab $0800 für die Zeichen und ab $1800 für die Farbinfos. Die Werte und Zeilennumern lassen sich bei Bedarf natürlich entsprechend an eigene Bedürfnisse anpassen. Das ist hier ja nur ein Beispiel. :)



    Und wie geht es? Ganz einfach:


    GOSUB 100 sichert den aktuellen Textbildschirm samt Farbinfos. Mit jedem Aufruf wird der aktuelle Bildschirm gesichert und die alte Sicherung gelöscht.


    GOSUB 200 holt den mit GOSUB 100 gesicherten Textbildschirm wieder zurück.


    Das Ganze funktioniert sowohl im 40 als auch im 80 Spalten-Modus.

  • Das steht zwar auch im Handbuch, aber da ich erst kürzlich danach gefragt worden bin, schadet es auch nichts, das mal extra zu erwähnen: :)


    Es gibt im Direktmodus des BASIC 65 Abkürzungen, die das tägliche Leben ein wenig einfacher machen können (da Tipparbeit gespart wird).


    Die am meisten verwendeten Abkürzungen sind wohl diese:



    Also der Pfeil nach links (links neben der Taste "1") steht für SAVE, das Dollarzeichen $ für DIR und das / (Shift+7) steht für LOAD.


    Es gibt auch noch den "Klammeraffen" @, der für DISK steht, aber der wird in der Regel weniger benötigt.


    Wichtig ist hierbei noch zu wissen, dass die Abkürzungen nur im Direktmodus gehen, also nicht in einem Programm verwendet werden können, und dass sie unbedingt in der ersten Spalte (also ganz links) stehen müssen. Ansonsten werden sie nicht erkannt und es wird ein Fehler ausgegeben.


    Der / hat auch noch den Vorteil, dass man bei einem sichtbaren Directory einfach in die Zeile mit dem Programm fahren kann und dort in der ersten Spalte einfach den / setzt und RETURN drückt. Dann wird das entsprechende Programm geladen, auch wenn sich noch überflüssige Zeichen vor oder nach dem Programmnamen befinden sollten.



    Also für Tippfaule genau das Richtige! :D

  • Zum Thema Optimierungen von BASIC-Programmen habe ich auch mal ein kleines Testprogramm geschrieben, um zu zeigen, wie sich die Verarbeitungszeiten in BASIC 65 für verschiedene Variabelbezeichnungen unterscheiden. :)


    Getestet wurde mit dem aktuellen ROM 920364.


    Ausgangspunkt ist eine Schleife, die 30000 Mal durchlaufen wird und nichts anderes macht als jeweils in die Variable B das Ergebnis der Rechnung 128 + 256 + 512 zu schreiben.


    Zuerst mit den konstanten Werten (Zeile 140) [T1], dann mit den Variablen C,D,E, die die Werte 128,256,512 enthalten (Zeile 210) [T2], dann mit C1,D1,E1 (Zeile 280) [T3], danach mit Feldelementen C(1),C(2),C(3) (Zeile 350) [T4] und abschließend mit Feldelemente CC(1),CC(2),CC(3) (Zeile 420) [T5].




    Und das sind die gemessenen Zeiten für T1 bis T5:


    var_test_c.png


    Das eher Unerwartete ist, dass die Routine mit den Variablen C,D,E [T2] sogar schneller ist als T1, die die Werte als Konstanten geliefert bekommt (24,8% schneller).


    Wenn es auf Geschwindigkeit ankommt, sind deshalb einstellige Variablenbezeichner vorzuziehen. Die sind beim BASIC 65 als sogenannte "schnelle Variablen" (jeweils feste Adresse im RAM) sogar schneller als die entsprechende Konstanten, wenn man sie öfter benötigt (wie z.B. in solchen Schleifen). :prof:


    Bei einer einzelnen Zuweisung ist es natürlich eher "witzlos", da man die "Konstanten"-Werte ja einmal zu Beginn in die Variablen speichern muss, was ja bisschen Zeit benötigt. ;)

  • Es gibt im Direktmodus des BASIC 65 Abkürzungen, die das tägliche Leben ein wenig einfacher machen können (da Tipparbeit gespart wird).

    Im neusten ROM 920365 ist eine weitere Abkürzung dazugekommen:


    Mit dem "Pfeil nach oben" (nicht die Cursortaste!) in der ersten Spalte wird ein RUN "Dateiname"+RETURN ausgeführt.



    Also im Directory einfach in die Zeile des gewünschten Programms fahren, in der ersten Spalte den "Pfeil nach oben" eingeben und RETURN drücken (die Zeichen vor und nach dem Dateinamen werden ignoriert und müssen nicht extra entfernt werden). Dann wird das Programm geladen und anschließend gestartet.

  • Im Emulator funktioniert das nicht im Direktmodus. Bei einem zurück kopieren, des Screens, werden die Farben nur in den Zeilen von 0-12 korrekt wieder gegeben. Alles was in den folgenden Zeilen steht, wird immer mit der aktuellen Cursorfarbe wieder gegeben.


    Eben nochmal im Programm Modus getestet. Das Resultat ist das selbe.

  • Bei 80x25 reicht doch das eingeblendete Farb-RAM bei $d800 nicht aus?

    Nein reicht nicht, hab es eben noch mal gegen getestet.

    Die ersten 2K Color RAM liegen bei $01f800


    Aber damit erzielt man das selbe Ergebnis.

    Gibts noch ne Adresse ?

  • Im Emulator funktioniert das nicht im Direktmodus. Bei einem zurück kopieren, des Screens, werden die Farben nur in den Zeilen von 0-12 korrekt wieder gegeben. Alles was in den folgenden Zeilen steht, wird immer mit der aktuellen Cursorfarbe wieder gegeben.


    Eben nochmal im Programm Modus getestet. Das Resultat ist das selbe.

    Stimmt, habe ich gar nicht bemerkt. "Wozu testen, wenn man Kunden hat, die das machen?" :D


    Damit geht es: