Hallo Besucher, der Thread wurde 2,3k mal aufgerufen und enthält 13 Antworten

letzter Beitrag von BIF am

Print bis zum Schluss - Zeilenvorschub verhindern

  • Hallo Zusammen!


    Die Frage wurde bestimmt schon 1000 x gestellt, aber ich finde einfach nicht die passende Antwort *sry*


    Wie kann ich den Zeilenvorschub in der letzten Zeile verhindern?
    Ich baue mir zur Zeit ein kleines Programm mit dem ich PETSCIIs als .SEQ zeichenweise lade und anzeige.
    Das klappt auch gut, aber ist der Screen voll, kommt der Umbruch.

    Wie kann ich das verhindern?


    Da ich ST abfrage und immer ein neues Zeichen hole, wenn ST nicht 64 ist, kann ich auch nicht die cursorposition nehmen und z.B. ein zeichen vorher aufhören. Möcht ich ja eigentlich auch nicht.


    Geht das irgendwie trotzdem?


    Besten Dank im Voraus!


    PHU

  • Lagen die PETSCII-Bilder denn vorher nicht schon als Dumps vom Bildschirm und Farb-RAM vor? In dem Fall ist es am einfachsten, die Speicherbereiche direkt zu laden. Ist auch schneller. Gibt's gerade 'nen aktuellen Thread zu: Bildschirm RAM laden und ausgeben.


    PETSCII über PRINT auszugeben führt auch z.B. zum Problem, daß Du den Quote-Mode zwischen Anführungszeichen irgendwie handhaben mußt (irgendwelche Farbumschaltungen oder RVS ON/OFF erzeugen da ja nur die inversen Steuerzeichen!).


    Ansonsten kann man auf das letzte Zeichen ohne Scrollen wie folgt schreiben:


    1. In die _vorletzte_ Position das _letzte_ Zeichen schreiben,

    2. Mit Cursor links (Code: 157) auf diese Position zurückgehen,

    3. Mit Insert (Code: 148) das Zeichen in die letzte Position schieben (dabei wird der Bildschirm *nicht* gescrollt!),

    4. Zu guter Letzt das _vorletzte_ Zeichen eben genau in den frei gewordenen Platz schreiben,

    5. (wenn man ganz vorsichtig sein will) mit Home (Code: 19) ab ins linke obere Eck.


    Gruß,


    Michael

  • Lagen die PETSCII-Bilder denn vorher nicht schon als Dumps vom Bildschirm und Farb-RAM vor? In dem Fall ist es am einfachsten, die Speicherbereiche direkt zu laden. Ist auch schneller. Gibt's gerade 'nen aktuellen Thread zu: Bildschirm RAM laden und ausgeben.

    Hmm. Weiß ich nicht- glaube nicht. Es sind sequentielle Dateien, die ich über den Online-PETSCII-Editor von http://petscii.krissz.hu/ herunterlade. Nach meiner Auffassung sind hier einfach die Characters als String gespeichert. Ich hole die zeichenweise mit GET# ab und PRINTe sie wieder. Ist halt lahm, funktioniert aber zuverlässig. Frabwechsel funktionieren auch und und Konflikte mit bestimmten Zeichen habe ich auch nicht. Aber den Thread schaue ich mir an- das könnte auch was sein.


    Ja, ach. Den Weg kenne ich, aber ich will einfach nicht glauben, dass das nur so geht. Ist doch völlig drüber für so ein "einfaches" Problem.


    Ansonsten bietet mir der Editor alternative ein PRG als Download an- das ist wohl der Screendump.

    Das geht fix, aber da komme ich mit meinen (Basic-)Kentnissen nicht weiter-
    Wie kann ich das über ein eigenes Programm laden, anzeigen, wechseln?


    Ich lade das Bild, es wird fix dargestellt, list ergibt dann...


    10 sys2061

    ready.


    Hmm... und jetzt?


    Ich möchte eigentlich nur so eine Art Diashow bauen.

    Array mit 2 Feldern- Dateiname und Dauer;

    Der Reihe nach abbarbeiten. Done.

  • Das Tool haengt offensichtlich einen Basiclader hinzu (das "10 SYS2061").

    Nimm einfach die SEQ Datei, fuege die zwei Startbytes $00 $04 des Screens per Hexeditor am PC an, speichere das Ganze als PRG Datei und dann solltest du es als Datei mit ,8,1 laden koennen.

    Wie man das innerhalb eines BASIC Programs macht, steht in einigen Threads zum Thema BASIC Nachladen im Forum hier.


    Da sind natuerlich keine Farben dabei.

  • Es sind sequentielle Dateien, die ich über den Online-PETSCII-Editor von http://petscii.krissz.hu/ herunterlade.

    Die einfachste Lösung dürfte in der Tat sein, den Autor des Tools zu bitten, eine weitere Export-Möglichkeit hinzuzufügen: Nämlich ein File mit den Screencodes und eines mit den Farben zu erzeugen.

    Nach meiner Auffassung sind hier einfach die Characters als String gespeichert. Ich hole die zeichenweise mit GET# ab und PRINTe sie wieder. Ist halt lahm, funktioniert aber zuverlässig. Frabwechsel funktionieren auch und und Konflikte mit bestimmten Zeichen habe ich auch nicht.

    Ja, weil Anführungszeichen derzeit als "Anführungszeichen, Anführungszeichen, Backspace" gespeichert werden - damit werden die genannten Probleme umgangen. Dieser "Fix" beißt sich aber prompt mit dem Fix zum Beschreiben des letzten Zeichens auf dem Screen...

    Nimm einfach die SEQ Datei, fuege die zwei Startbytes $00 $04 des Screens per Hexeditor am PC an, speichere das Ganze als PRG Datei und dann solltest du es als Datei mit ,8,1 laden koennen.

    Das klappt nicht, dazu müssten in der Datei ja Screencodes stehen und kein PetSCII.

  • Hey! Und Danke für die Antwort.
    Kannst Du das kurz erklären?


    Im Moment mache ich das:

    Code
    1. 5000 rem *** view show ***
    2. [ ... ]
    3. 5150 for j=1tomax
    4. 5160 open 8,8,8,f$(j)+",s,r"
    5. 5170 get #8,p$:print p$;
    6. 5180 if st<>64 then 5170
    7. 5185 for t=1 to d(j):next t
    8. 5190 close8:next j:
    9. 5200 goto 10

    1.) Deine erste Version bringt mir den illegal quantity error
    2.) poke214,0: print p$; - crasht zwar nicht- gibt aber immer nur 4 Zeilen aus.

  • phat-phu:

    Natürlich gilt es immer die passende Lösung für das jeweilige Prg zu finden.


    213: Zeilenlänge
    214: Zeilenzeiger
    217-242: Zeilenverlängerungs-Register für Zeile 0-25


    mit dem Trick poke214,x:print kann man den Cursor auf eine gewünschte Zeile setzen.

    Auch wenn man die Zeilenlänge von 39 überschreitet wird der Zeilenzeiger(214) +1 gesetzt und in der jeweiligen Zeile mit der Ausgabe fortgefahen.



    Lösungsbeispiel für Dein Programm:
    5170: get#8, p$:print p$;:::ifpeek(214)=24then:poke214,255


    Schönen Gruß.

  • Also, Doppelpunkte erhöhen die Geschwindigkeit,

    und verbessern die Lesbarkeit des Programmes.


    Das erkennt man auch daran, daß kaum noch Verständisfragen auftauchen.

    Außer natülich zu dem Mysterium der Doppelpunkte.


    Geht es hier um Bit-Timing oder ist das ein Geheimcode ?

    Das wären natürlich die passenden Fragen.


    Viel Spaß beim Experimentieren.

  • Einfach etwas weniger Zeugs rauchen "aus der Natur" und dann geht's mit komischer Argumentationskette. :bgdev

    Ich glaube eher, die Leute haben es aufgegeben eine Frage zu stellen, weil da oft auch nach 3maligem Nachhaken kaum was Sinnvolles kommt.