Hello, Guest the thread was called3.3k times and contains 23 replays

last post from tilobyte at the

80 Zeichen/Zeile im Interlace-Modus!

  • Hallo allseits,


    bin vor Kurzem mal wieder über alte Software gestolpert, die ich vor vielen Jahren selbst programmiert habe. Die meisten Programmierprojekte endeten damals unfertig, doch ein paar Sachen hab ich doch tatsächlich fertig gestellt.


    Eine besonders "verrückte" Idee will ich Euch doch einfach mal zeigen:


    Es handelt sich um eine "Software-80-Zeichenkarte" für den C64. Soweit erst mal nix Besonderes. Es gab ja allerlei Anläufe damals, dem C64 80 Zeichen pro Zeile beizubringen, was beim Programmieren oder aber auch in Textverarbeitungen angenehm gewesen wäre. Aufgrund der niedrigen Bildschirmauflösung von 320 x 200 Pixeln wurde dies immer im Grafikmodus mit einem 4 x 8 Pixel großen Font realisiert. Das funktionierte zwar (z.B. hatte das Magic Formel-Modul eine solche 80-Zeichen-"Karte" eingebaut), der C64 war aber mit dem Grafikmodus doch recht überfordert. Insbesondere das Scrolling war grottenlahm, was wiederum beim Programmieren keinen Spaß bedeutete.


    Ich kam damals auf die Idee, einen 80-Zeichen-Modus etwas anders darzustellen: Mit einem Interlace-Modus. Die Idee war, per Raster-IRQ 50 Mal in der Sekunde zwei "normale", aber um 4 Pixel verschobene Textbildschirme zu wechseln, die die geraden und ungeraden Spalten des 80-Zeichen-Bildschirms darstellten. Der Vorteil dieser Lösung ist ein sehr schneller Bildschirmeditor mit sehr schnellem Scrolling. Der Nachteil natürlich das typische Interlace-Flimmern, da jedes Zeichen nur 25 Mal in der Sekunde dargestellt wird.


    Gesagt, getan. Das Resultat habe ich Euch einfach mal als .D64 angehängt. Im Laufe der Entwicklung wurde nicht nur der Basic-Bildschirm-Editor modifiziert, so dass er mit dem neuen Interlace-Modus arbeitet, sondern auch noch um diverse Funktionalitäten erweitert. Zum einen können 80-Zeichen- und 40-Zeichen-Bildschirm unabhängig voneinander verwendet und per Tastenkombination umgeschaltet werden (Idee: Programmieren bei 80 Zeichen, Testen bei 40 Zeichen). Die Bildschirme behalten dabei jeweils den Inhalt. Des Weiteren wurde der Basic-Editor um einige Funktionen ergänzt, die ebenfalls per Tastenkombination verfügbar sind (z.B. das Löschen des Restes der Zeile etc.). Um das Flimmern etwas erträglicher zu machen, kann zudem im 80-Zeichen-Modus auf monochrom geschaltet werden. Dann wird der Text nur in braun auf schwarzem Hintergrund dargestellt. Dreht man am CRT den Kontrast etwas runter, fällt das Flimmern dann kaum noch auf. Das Scrolling wird dann sogar noch schneller, da im Monochrom-Modus das Farb-RAM ignoriert werden kann.


    Die 80-Zeichen-Karte lässt sich mit LOAD "HIGHSPEED 80",8,1 laden und mit SYS 64738 starten. Ihr ahnt es schon: Es handelt sich um ein Modul, das ab $8000 im Speicher liegt und sich auf ein EPROM brennen lässt. Das Ganze auf eine EPROM-Bank gepackt, steht dann der 80 Zeichen-Modus direkt ab dem Einschalten sofort zur Verfügung.


    Im .D64 sind zudem noch eine Anleitung im MWriter-Format sowie ein Basic-Demo, das ein paar der Features der 80-Zeichen-Karte demonstriert.


    Ach ja: Im Emulator oder auf einem TFT funktioniert das Ganze nicht wirklich. Bitte auf einem echten C64 mit CRT-Monitor (1084, 1901 etc.) testen.


    Na jetzt bin ich mal über Eure Kommentare gespannt. Viel Spaß mit Highspeed 80! ;-) Ich hoffe es wird keiner blind... %-)


    Viele Grüße
    CK
    http://www.amiga600.de -- The Extreme Amiga 600 Upgrading Page

  • Das Demo sollte im 80-Zeichen-Modus gestartet werden. Es nutzt beide Bildschirmmodi und wechselt zwischen den beiden autarken Bildschirmen hin und her. Ist aber in der Tat nicht der Brüller das Demo. Sollte einfach nur ein paar Features demonstrieren. Die ganzen Funktionen verbergen sich hinter Tastenkombinationen (z.B. CBM+B für Monochrom), die sich natürlich auch ganz einfach in Print-Statements einbauen lassen. Genau das nutzt das Demo.

  • Danke. Freut mich, dass es Euch gefällt. Ich hab mir damals die 80-Zeichen-Karte zusammen mit dem ProfiAss in ein EPROM gebrannt. Das war ganz brauchbar: Im 80-Zeichen-Modus (am besten bei monochromer Darstellung) programmieren und direkt assemblieren. Im 40 Zeichen-Modus dann testen. Wobei die Kompatibilität natürlich naturgemäß durch die Speicherbelegung der 80-Zeichen-Karte schon eingeschränkt ist.


    Würde mich mal interessieren ob Ihr irgendeine brauchbare Software damit zum Laufen bekommt. Falls ja, bitte gerne kurze Info.


    VG CK

  • camper : Willst Du auf den Arm? :streichel: Will nur helfen. Da es hier auf echter Hardware läuft, kann ich mir nicht erklären, was Du sonst falsch gemacht hast, evtl. übersehen, dass keine BASIC-Startzeile vorhanden ist und ein SYS-Start erforderlich ist? Bloß weil ich mich kurz gefasst habe, braucht man jedenfalls nicht gleich wieder neurotische Siamkatze zu spielen.


    BTT cktwo :
    Habe es an zwei verschiedenen Rechnern getestet, beide Male an recht großer Farbröhre. Es scheint am alten VIC auf 407-Board deutlich besser zu performen als am neuen VIC auf -469-ASSY. Beim alten VIC konnte ich wirklich alles gut lesen, auch Lila auf Schwarz im Farbmodus. Das Flimmern stört kaum. Beim neuen VIC sind einige Farb-Kombinationen wirklich unleserlich, besonders(!) der "Monochrom-Modus" (Braun-auf-Schwarz). Generell nervt das Flimmern hier etwas mehr.


    Könntest Du das Ding noch ein wenig besser dokumentieren? Wie schaut man sich "high-anl.tx" am C64 an? Ich habe es jetzt mehr recht als schlecht mit dem Editor am PC versucht zu lesen. Mir fehlen noch ein paar Infos, z.B. über
    - Speicheradressen der jeweiligen Screens, um dort was hinzupoken.
    - Wo ist das "schmale" Charset abgelegt, wie ist es aufgebaut, kann man es mit einem Standard-Editor modifizieren?
    - Welcher Speicherbereich muss nach dem Start von Highspeed80 reserviert bleiben, um den Code nicht zu überschreiben?


    Beste Grüße
    Ryk

  • Doku ist gar nicht so einfach, kann mich an kaum noch was erinnern... aber ich versuch's mal.


    Die Anleitung lässt sich mit dem "MWriter" anzeigen. Das war eine eher unbekannte, aber sehr leistungsfähige Textverarbeitung, die -- soweit ich mich entsinnen kann -- vom 64'er Magazin veröffentlicht wurde. Ich hab damit viel getippt, u.a. eben die Anleitung.


    Aber zur Doku:


    - Software liegt als Modul logischerweise ab $8000
    - Zeichensatz wird ab $e000 generiert. Es handelt sich um einen ganz "normalen" Zeichensatz, der halt nur 4 Pixel breit ist.
    - Die Video-RAMs des 80-Zeichen-Modus liegen ab $c000 (ungerade Spalten) und $c400 (gerade Spalten).
    - Das Farb-RAM gibt's im 80-Zeichen-Modus nur 1x. D.h. dass sich zwei nebeneinander liegende Zeichen eine Farbe teilen müssen. Das Umkopieren des Farb-RAMs hätte die IRQ-Routine zu langsam gemacht. Außerdem hätten sich beim Interlacing ungewünschte Mischfarben ergeben. Die Einschränkung gibt's aber auch bei allen 80-Zeichen-Karten, die den Grafikmodus nutzen.
    - Beim Umschalten 40/80 Zeichen sowie Farbe/Monochrom wird das Farb-RAM gesichert. Das Farb-RAM des 80-Zeichen-Modus wird nach $c800, das den 40-Zeichen-Modus wird nach $cc00 gerettet.


    Die zusätzlichen Editorfunktionen, die per Tastenkombinationen verfügbar sind:
    CTRL-A: Umschaltung 40/80 Zeichen
    CTRL-B: Umschaltung Farbe/monochrom (nur 80 Zeichen-Modus)
    CTRL-J: Aktuelle Zeile löschen
    CTRL-O: Bildschirm über aktueller Zeile löschen
    CTRL-D: Bildschirm unter aktueller Zeile löschen
    CTRL-F: Zeile links vom Cursor löschen
    CTRL-G: Zeile rechts vom Cursor löschen
    CTRL-P: Tabulatorsprung ausführen


    Das dürften erst mal die wichtigsten Informationen sein.


    Kleine Anekdote am Rande: Ich hab die Software damals auf dem Amiga entwickelt und mit einem ebenfalls selbst entwickelten Cross-Assembler auf dem Amiga übersetzt. Highspeed 80 habe ich damals an's 64er Magazin zur Veröffentlichung geschickt. An der 80-Zeichen-Karte fand man damals dort kein Interesse -- wohl aber am Cross-Assembler, den ich in einem Nebensatz erwähnt hatte. Der wurde dann in einer erweiterten Version später als "XAss 1.0" auch veröffentlicht. So kommt's manchmal anders als man denkt... %-)

  • Danke.


    Ob und wann ich es wirklich mal einsetze, kann ich nicht versprechen, aber ich will im Zusammenhang mit ein paar selbsterstellten unveröffentlichten Tools mal damit rumspielen. Ich finde 80Zeichen-Modus besonders für das Darstellen von Manuals interessant. Gerade wenn diese im 40-Spalten-/1000-Zeichen Modus über mehrere Screens gehen, trägt es imho zur Übersicht bei, die Anzahl der benötigten Screens zu halbieren. Alles, wofür man viel Text braucht, den man nicht oft lesen muss (klassicherweise eben Manuals) könnte interessant sein. Klar gibt es auch schon andere Verfahren ohne Interlacing, wie sie z.T. von Diskmags verwendet werden (Proportionalschrift, z.B. in Vandalism News #55), aber sowas ist viel zu hoch für mich. :)


    Habe doch noch eine Frage zum Charset. Erinnerst Du Dich noch, wie das aufgebaut ist? "Rechnet" die Software einfach aus dem Standard-Font einen schmaleren oder ist der "hardcoded"? Wie kann man z.B. ggf. ein eigenes "0.5x1" Set erstellen und mit dem dann den schmalen Default-Fontsatz ersetzen/überschreiben? Würde ich dafür z.B. Buchstabenpaare @A bzw. BC usw. einfach in einem Zeichen eines 1x1 Font editieren, also hier als Zeichen #$00 bzw. Zeichen #$01?

  • Wenn man nicht grade einen uralten TV hat, gehen feste 4x8 chars auch ganz gut.
    Hatte da mal etwas gemacht vor kurzem. Noch nicht ganz spruchreif.
    Ist aber vom PC aus komplett scriptbar, in etwa so wie LaTeX.
    80/40 Zeichen mix + Spalten + Grafik
    enthusi

  • Zur Frage bzgl. des Zeichensatzes. Es handelt sich um einen "gepixelten" 8x8 Zeichensatz, bei dem einfach nur die linken 4 Spalten genutzt werden. Was anderes kann VIC erst mal nicht darstellen. Den Zeichensatz komplett zu generieren, hätte vermutlich einige unschöne Ergebnisse zur Folge gehabt, weswegen ich den Zeichensatz selbst "gepixelt" habe. Letztendlich handelt es sich ja sogar um einen 3x8 Pixel Zeichensatz, da 1 Spalte ja benötigt wird, um Abstand zum Folgezeichen zu erzeugen. Der Zeichensatz liegt am Ende des Objektcodes und wird von dort nach $e000 kopiert. Allerdings ist er nicht ganz vollständig, beispielsweise werden die inversen Zeichen im Zuge des Kopieren erstellt. Ein bisschen was wird also doch generiert. Natürlich hätte man im Objektcode zwei 4x8 Zeichen in ein 8x8 Zeichen packen können, um etwas Platz zu sparen. Letztendlich war mir das den damit verbundenen Aufwand aber nicht wert.