Quick-Tips

Andere Applikationen ans Ruder lassen

Das Pseudo-Multitasking unter GEM ist darauf angewiesen, daß alle gleichzeitig laufenden Applikationen (Hauptprogramm und Accessories) AES-Funktionen aufrufen. Dann nämlich tritt der sogenannte Dispatcher in Aktion und bestimmt, zu welchem Programm zurückgesprungen wird. Das muß nicht das sein, welches AES aufgerufen hat. Wenn man in einem Teil seines Programms keine AES-Funktionen benötigte, aber trotzdem anderen Prozessen eine Chance lassen wollte, blieb einem keine andere Möglichkeit, als einen Dummy-Aufruf zu machen, z.B. evnt_timer() ohne Wartezeit. Die GEM-Version 2.0 (bis jetzt nicht für Atari erhältlich) hat eigens dafür die Funktion appl_yield(). Doch auch beim Atari-GEM gibt es eine elegantere Version. Normalerweise erhält das Register D0 vordem TRAP #2 den Wert 200 als Code für das AES. Nimmt man aber stattdessen 201, wird keine Funktion ausgeführt, sondern nur der Dispatcher aufgerufen. Der Zeiger auf den Parameterblock in D1 wird trotzdem benötigt, aber nur wegen des GLOBAL-Felds. Die Implementierung dieses Aufrufs in einer höheren Sprache sollte für jeden, der mit Assembler nicht gerade auf Kriegsfuß steht, keine Schwierigkeit sein.

Oliver Scheel

Der Dreh vor der „ersten Hilfe“

Die Atari-Maus ist ein stark beanspruchtes Kleinod, weshalb nach einiger Zeit des Kückens gravierende Abnutzungserscheinungen vor allem der linken Maustaste zu schaffen machen. Möchte man den Zeigefinger vor einem ähnlichen Schicksal bewahren, muß man sich entweder nach einer neuen Maus umsehen oder kostengünstiger und entsprechend der Q-Tip-Anleitung in ST 3/90 die Tasten-Kontakte durch neue ersetzen. Zu dieser Einsicht kommt man in den meisten Fällen an einem Sonn- oder Feiertag, auf jeden Fall aber zu einem Zeitpunkt, wo es besonders schwierig ist, an neue Geräte oder Bauteile heranzukommen. Da nun beim ersten Mal nur der Kontakt der linken Maustaste stark lädiert ist, die rechte Taste aber noch einwandfrei funktioniert, bietet es sich als Sofortmaßnahme an, einfach die Funktionalität beider Tasten zu vertauschen (auch als Grundsatzlösung für Linkshänder empfehlenswert). Dazu öffnen wir, wie in ST 3/90 beschrieben und abgebildet, das Mausgehäuse und sichten in der oberen Hälfte am rechten Rand einen Steckverbinder. Mit einem Schraubenzieher hebeln wir den Buchsenstecker aus der Stiftleiste. Die beiden oberen Kontakte (weiß, gelb) sind die Schaltkontakte für die Maustasten (rechts, links). Diese Anordnung kann durch Messungen zwischen Steckverbinder und Anschlußbuchse der Atari-Maus ermittelt werden (Bild 1 und 2, siehe auch Profibuch). Der entscheidende Kunstgriff besteht nun darin, mit einer Nadel die beiden oberen Kontakte aus der Steckerleiste herauszuziehen und vertauscht wieder hineinzustecken. Anschließend wird der Buchsenstecker wieder auf die Stiftleiste gesteckt und das Gehäuse zugeschraubt. Wer beim anschließenden Test das Gefühl hat, daß jetzt das Klicken überhaupt nicht mehr funktioniert, der traktiert wahrscheinlich nach wie vor die linke Maustaste. Nach einer Gewöhnungsphase jedoch funktioniert die Übergangslösung meist prächtig, und man hat Zeit gewonnen, nach dauerhafteren Lösungen Ausschau zu halten, bei denen dann ja wieder auf die „richtige“ Maustastenbelegung umgeschaltet werden kann.

Editha Kuske, 6107 Reinheim 4

Bild 2: Der Stecker an der Maus
Bild 1: Der Buchsenstecker in der Maus

ST und SHARP-Pocket-Computer

Dieser Quicktip ist für alle Benutzer eines Sharp-Taschenrechners mit ST-Interface und des Programms Transfile gedacht. Mit Minimalaufwand kann man sich ein elektronisches Adreßbuch zimmern! Das folgende Mikroprogramm (als Anregung für ein komfortableres gedacht) ist in der Lage, die Telefonnummer zu einem bestimmten Namen (oder der ersten paar Anfangsbuchstaben desselben) auszugeben. Dabei wird einfach die DATA-Liste (ab Zeile 240) durchforstet und der erstpassende Eintrag angezeigt oder bei erfolgloser Suche eine Meldung ausgegeben (s. Listing 1).

Das Programm ist ja noch das wenigste, aber wie bekommt man seine Adressen in den Quellentext? Sein ganzes Adreßbuch in diese DATA-Zeilen eintippen ist nicht jedermanns Sache, umsomehr, weil bei einem Tippfehler eine falsche Person am anderen Ende der Leitung ist. Da ein echter ST-Benutzer ja sowieso seine ganze Bekanntschaft in irgendeiner Datenbank abgelegt hat, läßt sich das problemlos realisieren. Bei Adimens legt man sich eine Ausgabemaske in etwa dieser Form zurecht:

    #COUNT# DATA
    "#NAME#","#TELEFON#"

und läßt das ganze nicht beim Drucker hinaus, sondern legt es in eine Datei. Auch bei den Sharp-Modellen mit knickrigem Speicher lassen sich so an die hundert Telefonnummern speichern. Von Hand oder mit der Renumber-Option von Transfile werden noch die mit COUNT vorgezählten Zeilen-nummem zurechtgeschürbelt, mit der Zeile DATA „XXX“ (nicht vergessen!) ergänzt, die ganze Geschichte an obiges oder ähnliches Sharp-BASIC-Programm angehängt und in den Pocket-Computer geladen.

Marco Strehler, CH-8400 Winterthur

100 REM -- ADRESSBUCH --
110 "A":CLEAR 
120 DIM S$(2)*20: REM DIMENSIONIEREN 
130 DIM I$(0)*20 
140 INPUT "NAME ? ";I$(0)
150 L=LEN I$(0) : REM LAENGE ERMITTELN 
160 RESTORE
170 READ S$(0):REM ZEILEN EINLESEN 
180 IF S$(0)="XXX" THEN PRINT "NICHTS GEFUNDEN":GOTO "A"
190 READ S$(1)
200 S$(2)=LEFT$(S$(0),L)
210 IF I$(0)<>S$(2) THEN GOTO 170 
220 PRINT S$(0) :PRINT S$(1)
230 GOTO "A"
240 REM -- DATEN --
250 DATA "HAENSEL","11 11 11” 
260 DATA "GRETEL","22 22 22"
270 DATA "BOESHEX","99 99 99"
... ........................
... ........................
900 DATA "XXX":REM ENDE

Listing 1: Eine Mini-Dateiverwaltung für Sharp-Taschenrechner

Kopieren und Blinken

Wer in GFA-BASIC Dateien kopieren möchte, muß sich eine eigene Routine dazu schreiben, da keine spezielle Routine für solche Zwecke eingebunden ist. Eine einfache und zudem schnelle Möglichkeit, Dateien zu kopieren, sehen Sie in Listing 2. Oder möchten Sie vielleicht einfach mal die Leuchtdioden Ihrer Laufwerke blinken lassen, um den Benutzer auf etwas aufmerksam zu machen? Nichts leichter als das, dazu müssen Sie lediglich Listing 3 abtippen!

Gregor Durchalski, W-4690 Hemel

'Kopieren einer Datei (source, dest.) 
PROCEDURE copy(a$,b$) 
    LOCAL a%,b%,c%,i% 
    b%=1 
    IF EXIST(b$) 
        ALERT 3," | Datei existiert bereits!",1, "Weiter|Abbruch",b% 
    ENDIF 
    IF b%=1 
        OPEN "I",#1,a$          !Quelldatei 
        OPEN "O",#2,b$          !Zieldatei 
        a%=LOF(#1)              !Länge des Files
        b%=FRE(0)-3000          !Freier Speicher 
        c%=a% MOD b%            !Rest
        DIM a|(b%)              !Speicher reser. 
        FOR i%=1 TO (a% DIV b%) !Schleife 
            BGET #1,V:a|(0),b%  !Lesen 
            BPUT #2,V:a|(0),b%  !Schreiben 
        NEXT i% 
        BGET #1,V:a|(0),c%      !Rest lesen 
        BPUT #2,V:a|(0),c%      !Rest schreiben  
        CLOSE 
    ENDIF 
RETURN

Listing 2: Eine Kopierroutine in GEA-BASIC

'Läßt Laufwerkslampen blinken 
'a&=Laufwerk 1 oder 2 
'b&=wie oft blinken, c&=Blinklänge 
PROCEDURE drive_blink(a&,b&,c&)
    FOR i&=1 TO b& 
        ~XBIOS(29,5-a&)
        PAUSE c& 
        ~XBIOS(30,2+a&)
        PAUSE c& 
    NEXT i& 
RETURN

Listing 3: So läßt man Laufwerkslampen blinken.



Aus: ST-Computer 02 / 1991, Seite 162

Links

Copyright-Bestimmungen: siehe Über diese Seite