Quick-Tips

16MHz-Anzeige beim AdSpeed

Seit einiger Zeit betreibe ich den AdSpeed von ICD in meinem ATARI ST. Von Anfang an habe ich mich darüber geärgert, daß es keine (zumindest dokumentierte) Möglichkeit gibt, die momentane Taktfrequenz des Prozessors anzuzeigen. Die Anzeige per Software, wie im Accessory des AdSpeed, ist für mich unbefriedigend, da dies Probleme bei Umschaltung der Bildschirmauflösung durch den AutoSwitch-OverScan gibt. Zur Lösung des Problems habe ich mir folgenden preisgünstigen (ca. 3,- DM) Hardware-Zusatz überlegt (siehe Bild). Das ganze besteht, wie in der Skizze zu sehen, nur aus einer LED, einem Widerstand von 3900 sowie einem TTL-IC SN74 LS393. Alle benötigten Signale können direkt an der AdSpeed-Platine abgegriffen werden:

+5V: Pin 14 des Sockels der 16MHz-CPU
?MHz: Pin 15 des Sockels der 16MHZ-CPU
Masse: Pin 16 des Sockels der 16MHZ-CPU
8MHz: Pin 15 des Steckers des AdSpeed im Sockel der original CPU

Die ganze Schaltung kann auf einer kleinen Lochrasterplatine aufgebaut und direkt neben dem AdSpeed befestigt werden. Dann nur noch ein kleines Loch ins Gehäuse für die LED bohren und diese mit zwei Kabeln mit der Platine verbinden - fertig!

Nun zur Funktionsweise: Das IC ist ein zweifacher 4-Bit Binärzähler. Der zweite Zähler zählt die Impulse des 8MHz-Taktes. Nach acht Takten setzt er den ersten Zähler sowie sich selbst zurück. Der erste Zähler zählt die zu prüfende Taktleitung. Der Ausgang Qd schaltet die LED, und zwar so, daß nach 8 Impulsen die LED leuchtet. Ist der zu prüfende Takt 8MHz, wird der erste Zähler vom zweiten nach acht Takten zurückgesetzt, die LED bleibt aus. Ist der Takt größer als 8MHz, blinkt die LED. Allerdings so schnell, daß es so aussieht, als ob sie leuchtet. Das ganze müßte mit jedem anderen Hardware-Beschleuniger (bzw. im MEGA STE - dort muß dann nur der 8MHz-Takt woanders abgegriffen werden) genausogut funktionieren.

Wilfried Mintrop

Speedo-Font-Namen ermitteln

Man kann über das GDOS zwar die Font-IDs und die Namen der Fonts feststellen, welcher Font jedoch welchem Dateinamen entspricht, welches Erstellungsdatum der Font hat und welchem Copyright er unterliegt, das kann man nicht so einfach erfahren. Und da man aus den Dateinamen nun wirklich nicht auf den Font-Namen schließen kann (was heißt bitteschön BX007128.SPD ...?), habe ich ein kleines Programm geschrieben, das diese Frage komfortabel beantwortet. Man muß nur für "Path" den Pfad einsetzen, in dem sich die Fonts befinden und in "Dest" den Dateinamen der Datei, die erzeugt werden soll und in die die Daten geschrieben werden.

Andreas Barkhoff

PROGRAM Speedo_Names;
(*
    zeigt Speedo-Dateinamen und die jeweiligen Fontinformationen

    Autor: Andreas Barkhoff

    Compiler: PURE PASCAL ab V. 1.1 (nullterminierte Strings)
    (c) 1994 MAXON-Computer
*)

USES TOS;

CONST
(* Konstanten für 1ST-Word-Format; können auf Wunsch einfach
überall aus dem Programm gestrichen werden •)

UL : STRING = #27#$88; NO : STRING = #27#$80#32;

VAR
f1      : TEXT;     Buff     : PCHAR;
MyDTA   : DTAPtr;   Path,Dest: STRING;
MyBuff  : POINTER;  j        : LONGINT;

BEGIN
Path:= 'C:\btfonts\'; Dest:= 'C:\liste.doc';
MyDta:= FGetDTA;
MyBuff:= MALLOC(256);
ASSIGN(f1, Dest);
REWRITE(f1);
IF Fsfirst( Path+'.SPD', FA_ATTRIB ) = 0 THEN 
REPEAT
    j:= FOpen( Path+myDta*.d_fname, FO_READ); 
    Fread(j, 256, MyBuff); FClose(j);
    WRITELN(f1,UL+'Dateiname:'+NO+myDtaA^.d_fname); 
    Buff:=MyBuff;
    INC(LONGINT(Buff), 24); WRITELN(f1,UL+'Fontname :'+NO+Buff);
    INC(LONGINT(Buff), 70); WRITELN(f1,UL+'Datum    :'+NO+Buff);
    INC(LONGINT(Buff), 80); WRITELN(f1,UL+'Copyright:'+NO+Buff);
    WRITELN(f1);
UNTIL Fsnext <> 0;
CLOSE(f1);
Mfree(MyBuff);
END.

Unterstrichener Text mit RCS

Kann man ohne Extended Objects, sich überlappende Objekte oder sonstige Tricks unterstrichenen Text erzeugen? Man kann! Man nehme eine I-Box, stelle die Höhe auf 1 und setze sie unter den Text - fertig! Natürlich geht sowas mit dem RCS V2.1 von Digital-Research nicht. Außer mit einem Trick, aber der muß nur einmal angewendet werden -ein Patch. Der relevante Offset in der (unkomprimierten) Programmdatei ist $C4AA. Der Wert $7002 muß nur auf $7001 abgeändert werden. Wen’s interessiert: moveq#$02,D0 wird in moveq #$01,D0 umgeändert. Nach dem Patch sind auch vertikale Linien möglich.

Jan Paul Schmidt

STs an Videorekorder

Entgegen der Aussage von Harald Schmitz im Quicktip "Videorekorder am Falcon030", Heft 12/93, Seite 152, ist es möglich, alle ATARI STs mit eingebautem HF-Modulator, sprich: TV-Ausgang, an einen entsprechenden Videorekorder anzuschließen. Die erforderlichen Signale liegen am Monitoranschluß an und sind auch aus dem Handbuch zu ersehen:

Pin 2 - Composite Video (FBAS)
Pin 1 - Audio
Pin 13 - Masse für beide Signale

Diese Signale können mittels Chinch- oder Scart/EuroAV-Stecker an den Rekorder geführt werden, wobei abgeschirmtes Kabel verwendet werden sollte. Die Masse wird dann über die Abschirmung geleitet. Auf diese Weise lassen sich auch relativ preisgünstige Videomonitore für die ST-Farbmodi (Spiele) verwenden. So benutze ich selbst meinen »Commodore 1802" aus "plus/4"-Tagen noch. Bei Verwendung ei nes Scart/EuroAV-Steckers werden an diesem die folgenden Pins verwendet:

20 - Video-IN
17 - Video-Masse
6 - Audio-IN-L
2 - Audio-IN-R
4 - Audio-Masse

Das Audiosignal legt man bei Stereorekordern sinnvollerweise auf beide Kanäle. Die gemeinsame Masseleitung vom Computer teilt man durch eine Brücke im Scart-Steckergehäuse auf Pin 17 und 4 auf.

Martin Stoll

STOP!

"STOP" ist der vielleicht am seltensten benutzte Assembler-Befehl, obwohl er bei der Interrupt-Programmierung nützlich sein kann. Ihm wird ein Parameter übergeben, mit dem das Statusregister gesetzt wird (Supervisor-Modus beachten).

Anschließend wartet der Prozessor auf eine Interrupt-Exception. Als Beispiel ein kleines Programm, das auf eine Tastatur-, Maus- oder MIDI-Eingabe (=Interrupt-Exception von ACIAs) wartet.

Jan Paul Schmidt

pea     MAIN(PC)
move.w  #$26,-(A7) ;supexec 
trap    #$E
addq.l  #$6,A7

clr.w   -(A7) ;Pterm0
trap    #$01

MAIN:

move.l  $FFFFFA06.w,-(A7)   ; Register sichern
move.l  $FFFFFA12.w,-(A7)   ; Mit Long geht's einfacher
moveq   #$40,D0             ; nur ACIA-IRQ
move.l  D0,$FFFFFA06.w      ; Register setzen
move.l  D0,$FFFFFA12.w

stop    #$2500              ; Nur MFF-IRQ s und warten

move.l  (A7)+,$FFFFFA12.w   ; Register restaurieren
move.l  (A7)+,$FFFFFA06.w
rts

Tips zu Calamus

Wenn man in CALAMUS SL Megapaint-Bilder im CVG-Format importiert, die Kreisbögen bzw. abgerundete Rechtecke enthalten, wird CALAMUS möglicherweise folgende Meldung ausgeben: "Vektorobjekt zu komplex. Der Puffer zur Ausgabe für Vektorobjekte (Vec Out BufSize) ist zu klein!”. Selbst eine enorme Vergrößerung des Vektorpuffers mit dem Modul "System Parameter" bringt keinen Erfolg.

Sollte nach dem Anklicken von Abbruch das gewünschte Bild wider Erwarten erscheinen, ist die Freude dennoch nur von kurzer Dauer. Möglicherweise verschwindet das Bild bei der nächsten Änderung der Bildschirmdarstellung. Spätestens beim Versuch, die zugehörige Seite auszudrucken, erscheint die frustrierende Meldung von eben wieder, oder ein Systemabsturz führt zur jähen Ernüchterung. Abhilfe schafft folgender Umweg: direkt nach dem Import exportiert man das Bild wieder im CVG-Format unter gleichem Namen, um es dann wieder zu laden. Und siehe da, alles klappt auf einmal, als wäre nichts gewesen.

Ein weiteres Problem zeigt sich beim Versuch, Megapaint-CVG-Exporte mit Calamus im Vektor- und bzw. im neueren Line-Art-Modul nachzubearbeiten. Der Select-Rahmen des oberen Objektes erstreckt sich wie die aller darunter liegenden Objekte genau über die gesamte Bildfläche. Auch das Feature "Rahmen auf Objektgröße anpassen” wirkt nicht. Erst nach dem oben beschriebenen Umweg über CVG-Export und Reimport lassen sich die Objekte programmgemäß bearbeiten. CVG ist eben nicht immer ganz CVG.

Hubert Heinrichs



Aus: ST-Computer 02 / 1994, Seite 124

Links

Copyright-Bestimmungen: siehe Über diese Seite