Quick-Tips

Größere Bildschirmdiagonale

Beim SM 124 kann sehr einfach der Bildschirminhalt vergrößert werden. Der Rand wird dadurch entsprechend kleiner. Der Vorteil des Umbaus ist, daß der Bildschirminhalt deutlicher zu erkennen und auch aus größerer Entfernung sichtbar ist. Als Vorbereitung des „Umbaus“ ist es ratsam, das Bildschirmfenster mit wasserfestem Filzstift zu markieren. Dann müssen die sechs Schrauben an der Monitorrückseite gelöst werden (Monitor vorher ausstecken). Der hintere Gehäuseteil kann dann vorsichtig herausgezogen werden, wobei es nötig ist, das Kabel zum Lautsprecher auf der Hauptplatine auszustecken. Suchen Sie danach auf der Hauptplatine den Trimmer VR601 (v size) und die Spule L 703 (h size). Drehen Sie solange, bis das Monitorbild jeweils ca. 1 cm über die Markierungen herausragt. Dabei sollten keine spannungsführenden Teile berührt werden, da im Monitor lebensgefährliche Spannungen vorhanden sind. Aus diesem Grund sollten auch gut isolierte Schraubenzieher verwendet werden. Nach dem Zusammenbau und Entfernung der Filzstiftmarkierungen haben Sie ein wesentlich besseres und größeres Monitorbild. Falls Sie Hardware haben, welche Ihr Monitor beeinflußt, können Probleme auftreten (ausprobieren).

Thomas Mokier, 7100 Heilbronn

Kontrastreicher Grafikdruck mit 1st Wordplus

Sicher haben sich schon etliche AnwenderInnen von Wordplus geärgert, daß die Bildwiedergabe auf dem Drucker meist nur sehr unzureichend mit dem Bildschirmbild übereinstimmt. Neben Verzerrungen und Größendifferenzen tritt bei 24-Nadeldruckern auch eine sehr kontrastarme Druckdarstellung als Mangel in Erscheinung. Letzteres ist gegeben, wenn man, dem Handbuch zu Wordplus folgend, seinen 24-Nadler im Epson-Grafikmodus 0 (8 Nadeln, 60 dpi) betreibt. Da die Nadeln eines 24-Nadeldruckers nur etwa 1/120" Durchmesser haben, kann ein zu druckendes Pixel, das auf dem Papier etwa 1/60" x 1/60" groß ist, nicht voll geschwärzt werden. Dieser Umstand wirkt sich nur horizontal aus, vertikal werden immer drei benachbarte Nadeln pro Pixelhöhe benutzt. Man kann den Mangel aber sehr einfach beseitigen. Der Druckertreiber für Wordplus bietet nämlich eine Option, die es erlaubt, jedes Pixel zweimal nebeneinander drucken zu lassen. Das hat zwar auch zur Folge, daß sich die Bildbreite verdoppelt, läßt sich aber durch eine Verdoppelung der Grafikauflösung kompensieren. Wie das geht? Ganz einfach, der zweite Wert der sogenannten Druckergrundparameter muß den Wert 2 enthalten! Die Druckergrundparameter sind die ersten sechs Zahlen (HEX), die durch Kommata getrennt in einer Zeile der HEX-Datei stehen. Nun muß nur noch die Grafikauflösung verdoppelt werden. Dazu wählt man in Zeile 26 der Steuercodetabelle, diese folgt in der HEX-Datei unmittelbar auf die Druckergrundparameter, anstelle des Grafikmodus Oden Modus 1 (8 Nadeln, 120 dpi). Nach der Umwandlung der HEX- in eine CFG-Datei hat man einen Druckertreiber, der zwar um 30% vergrößerte, aber formtreue und kontrastreiche Bilder auf dem 24-Nadeldrucker im Epson-Modus liefert.

Georg Schober, 8520 Buckenhof

Umrüstung von 2 auf 6 Chips

Nach dem Umrüsten eines Mega 4 vom TOS-ROM in 2 Chips auf eines mit 6 Chips traten ständig nicht erklärbare Abstürze auf, eine Erscheinung, die sich bei der Benutzung des Spectre 128 noch verstärkte. Nachfragen bei einigen Bastlern führten schließlich zum Erfolg.

Durch Austausch von 2 TTL-Bausteinen ließen sich die Probleme dauerhaft beseitigen. Dabei handelt es sich um zwei Chips mit der Typenbezeichnung 74LS373 (es gibt nur 2 im ST). Diese müssen getauscht werden gegen zwei Chips mit der Bezeichnung 74ALS373. Diese Hochleistungs-Chips sind aber nicht überall zu bekommen, man kann es deshalb ersatzweise auch mit 2 Chips des Typs 74HC373 probieren. Oft sind diese schon leistungsfähig und schnell genug.

Die Probleme traten durch eine zu hohe Belastung des Busses auf. Die neuen Treiberbausteine sind leistungsfähiger als die alten und haben genug Reserven, um die zusätzliche Belastung durch die neuen ROM-Bausteine zu kompensieren. Tip: Beim Umrüsten die neuen Chips sockeln.

rw

AUTO-Ordner-Programme geordnet

Alle Programme im AUTO-Ordner werden nach dem Rechnerstart zuerst und automatisch ausgeführt. Dabei spielt die Reihenfolge oft eine wichtige Rolle. Um nun sicherzustellen, daß eine ganz bestimmte Reihenfolge auch tatsächlich eingehalten wird, sollte man folgendermaßen vorgehen: die Programmnamen so ändern, daß die gewünschte Reihenfolge durch vorangestellte Ziffern klar erkennbar ist, also z.B. „1QMOUSE.PRG“, „2FSELECT.PRG“, „3IMMU.PRG“ usw. Nun werden die Programme in dieser Reihenfolge einzeln (!) in den AUTO-Ordner kopiert, damit die physikalische Reihenfolge mit der angezeigten übereinstimmt. Dadurch kann künftig beim Kopieren nichts mehr durcheinandergeraten. Das gilt natürlich nur, wenn man nach „Namen“ oder „Art“ (und nicht nach „Datum“ oder „Länge“) sortiert.

Rudolf Tiemann

Neuer Papierkorb

Das Mac-Desktop ist ausgereifter als das des ST. Das ist amtlich. Ab TOS 1.4 kann man mittels der CONTROL-Taste auch Files verschieben. Ich kam auf die Idee, mir, wie beim MAC, einen Mülleimer anzulegen. der die Daten behält. Ich legte mir auf meiner HD einen Ordner „MÜLL“ an und verschob darauf lustig meine zu löschenden Files. Aber das endgültige Löschen war doch etwas umständlich. Daher habe ich ein AUTO-Ordner Programm geschrieben, das die Aufgabe für mich erledigt. So werden alle Dateien, die sich noch im „Mülleimer“ befinden, beim Einschalten oder nach einem Reset gelöscht. Beim TT oder beispielsweise mit Neodesk kann man den Ordner auch auf das Desktop legen und ihm sogar das Mülleimer-Symbol zuweisen!

Harald Wörndl-Aichriedler

PRINT "Lösche Papiereimer"
'
CHDRIVX 5           ! Laufwerk E
CHDIR "E:\MÜLL\"    ! Müll-Ordner
FILES "*.*"         ! File-Anzeige
WHILE EXIST("*.*")  ! Löschschleife
    KILL "*.*"      ! Eliminieren
WEND

Listing: Wir löschen munter drauflos.

Abschalten des Resets

Mit einer kleinen Zeile in GFA-BASIC können Sie verhindern, daß beim Wechsel des Monitors (also dem Abtrennen des Monitorsteckers von der Buchse) ein Reset durchgeführt wird: SLPOKE&H46E, LPEEK(&H408). Auf Adresse &H46E liegt der Vektor, über den gegebenenfalls gesprungen wird. Auf &H408 liegt ein Vektor auf ein RTN, der eigentlich zur Beendigung eines Programms dient. Wenn man diese Zeile compiliert und in den Auto-Ordner legt, gibt's keinen Reset mehr.

Doch Achtung: Bei einem richtigen Monitorwechsel kann der Shifter zerstört werden - vorher also wieder umprogrammieren!

Harald Wörndl-Aichriedler

USERDEF-Objekte leicht gemacht

Das AES bietet für selbstdefinierte Objekte den Typ USERDEF (ob_type=24) an. Für ein solches Objekt muß das eigene Programm die ganze Darstellung selbst übernehmen. Man kann sich dabei aber etwas Arbeit sparen. Wenn die Zeichenfunktion einen Wert ungleich 0 zurückgibt, wird dieser als ob_state interpretiert und das USERDEF-Objekt nachträglich verändert. Ist der Rückgabewert zum Beispiel 1 (SELECTED), wird es vom AES invertiert. Ist er 8 (DISABLED), wird das ganze Objekt mit einer Lighten-Maske „undiert“ und so weiter. Man muß also nicht selbst mühsam Routinen zum Invertieren, Umrahmen oder Schattenzeichnen entwickeln, sondern kann diese Knochenarbeit getrost dem AES überlassen.

Oliver Scheel

Weg mit störenden Dateien

Haben Sie sich auch schon einmal geärgert, daß durch die vielen Zusatzdateien zu Programmen die Verzeichnisse immer um ein Vielfaches länger werden, als sie eigentlich sein müßten? Ein paar Tricks schaffen hier Abhilfe. Bei normalen Files kann man im Attribut-Byte Bit 1 oder 2 (HIDDEN FILE bzw. HIDDEN SYSTEM FILE) setzen. Fopen() kann solche Dateien ohne weiteres öffnen. Voraussetzung ist aber, daß das Programm nicht zuerst mit Fsfirst() prüft, ob ein bestimmtes File vorhanden ist. Auch für die RSC-Dateien gibt es eine Möglichkeit zum Verstecken. Das AES sucht bei einem rsrc_load() mit shel_find() nach den gewünschten Dateien. Und diese Funktion verwendet erstaunlicherweise als Attributmaske %00010101, das HIDDEN SYSTEM-Bit ist also gesetzt! Folglich werden RSC-Dateien gefunden, die mit diesem Attribut versteckt wurden. Um seine Directories aufzuräumen, muß man also mit einem Programm, das das Ändern der File-Attribute erlaubt, alle störenden Dateien als HIDDEN SYSTEM kennzeichnen. Das Desktop zeigt sie dann nicht mehr an. Meistens werden die versteckten Dateien gefunden, im Zweifelsfall hilft ausprobieren.

Oliver Scheel

BAK-Dateien löschen

Der GFA BASIC-Interpreter erzeugt leider (?) permanent BAK-Files. Diese zu löschen, ist keine nette Arbeit. Schreibt man sich in die DESK TOP.INF-Datei in etwa folgende Zeile:

#F 03 04 C:\CLR_BAK.PRG@ *.BAK@

dann werden bei einem Doppelklick auf die eine BAK-Da-tei alle BAK-Dateien gelöscht, die sich im Ordner befinden, sofern man als CLR_BAK.PRG Listing 4 installiert hat.

Harald Wörndl-Aichriedler

PRINT "Lösche BAK-Files"
PRINT
FILES "*.BAK"         ! Alle BAK-Files anzeigen
'
WHILE EXIST("*.BAK")  ! Löschschleife
    KILL "*.BAK"      ! Eliminieren
WEND

Listing: So werden die lästigen BAK-Dateien eliminiert.

Link-Virenschutz in GFA-BASIC

Der hier vorgestellte Link-Virenschutz funktioniert ganz einfach: Da ein Link-Virus die Programm länge verändert, prüft das Programm einfach nach dem Start die eigene Länge und gibt ggf. Alarm. Das EXIST ist drin, damit kein Fehler -33 (Datei nicht gefunden) auftaucht, falls das Programm aus einer Shell gestartet wurde (dann funktioniert der Schutz natürlich nicht). Da man die Programmlänge vor dem Compilieren nicht kennt, gibt man zuerst eine ungefähre Zahl ein, bei der nur die Stellenzahl stimmen muß, compiliert, stellt im GFA-File dann die tatsächliche Länge ein und compiliert einfach nochmal. Den Programmnamen dürfen Sie nachträglich nicht ändern!

Rudolf Tiemann

PROCEDURE test_linkvirus
    LOCAL pfad$,prog$,al$,d.l%,antw&
    pfad$=CHR$(GEMDOS(25)+65)+":"+DIR$(0) 
    ' der Pfad, von dem aus gestartet wurde, 
    ' wenn NICHT aus einer Shell gestartet 
    prog$=pfad$+"XYZ.PRG"
    ' für "XYZ" muß der jeweilige Programmname
    ' eingesetzt werden 
    IF EXIST(prog$) !vermeidet ERR -33 
        OPEN "I",#1,prog$ 
        d.l%=LOF(#1) 
        CLOSE #1 
        IF d.l%<>12345 !hier Länge einsetzen 
            ' beim ersten Compilieren die richtige 
            ' Stellenzahl, beim zweiten Compilieren 
            ' die tatsächliche Länge einsetzen 
            al$=" | Virusbefall | XYZ.PRG löschen|" 
            ' hier wieder "XYZ" ersetzen 
            ALERT 3,al$," weiter |Abbruch",antw& 
            ' wer 'weiter' wählt, ist selbst schuld 
            IF antw&=2 
                END 
            ENDIF 
        ENDIF 
    ENDIF 
RETURN

Listing: Einfach, aber gut: ein Link-Virenschutz in GFA-BASIC.

Wer sind meine Eltern?

Manchmal ist es für ein Programm nützlich zu wissen, wie es gestartet wurde, ob durch den AUTO-Ordner, das Desktop oder ein weiteres Shell-Programm. Dazu sieht man sich die parent-Zeiger in der Basepage an. Dieser Zeiger verweist immer auf die Basepage des Prozesses, der das Programm gestartet hat. Nur der sogenannte Urprozeß, der bei der Initialisierung des GEMDOS angelegt wird, hat keine Eltern (wen auch?). Bei ihm ist der parent-Zeiger 0. Dieser Urprozeß ruft als erstes den Autostart-Prozeß auf, der alle im AUTO-Ordner enthaltenen Programme ausführt. Dieser Autostarter wird aber nie beim GEMDOS abgemeldet. so daß das anscheinend korrekt gestartete Desktop (oder COMMAND.PRG) sein Kind wird. Und so kann man aus der „Entfernung“ des eigenen Programms zum Urprozeß Rückschlüsse auf seine eigene Position in dieser Hierarchie ziehen. Man zählt einfach, wie oft der parent-Zeiger ungleich 0 ist. Ist dies zweimal der Fall, befindet man sich in einem Autostartprogramm, bei dreimal sind weitere Shells zwischengeschaltet, die ihrerseits vom Desktop gestartet wurden. Das folgende Assembler-Programm liefert in D0 die Anzahl der Ebenen wie oben beschrieben. Es geht davon aus, daß pbase einen Zeiger auf die eigene Basepage enthält.

Oliver Scheel

; Offset des parent-Zeigers in dar Basepage:
parent      equ 36

whatshell:  movea.l pbase,a0
            moveq   #0, d0

loop:       tst.l   parent(a0)
            beq     anda

            movea.l parent(a0),a0
            addq    #1,d0
            bra     loop

ende:       rts

Listing: So wird die Anzahl der Ebenen bestimmt.



Aus: ST-Computer 01 / 1991, Seite 177

Links

Copyright-Bestimmungen: siehe Über diese Seite